Code Monkey home page Code Monkey logo

gameservers-docker's Introduction

Putting game servers in Docker containers. Because it makes life easier.

A set of game servers that have been wrapped with Docker. All images are composed of other images in this repository, except for base. Most images will auto-download any dependencies they have (eg, factorio server files or sourcemod for srcds), making it almost one command to install a server. No binaries are stored in this repo, so make sure you have internet to download them with.

Includes a utility script start_server.sh which mounts save data to an external volume and sorts out networking for you.

Quick start

Assuming you are on a blank server with Git and docker installed:

git clone https://github.com/OpenSourceLAN/gameservers-docker.git .
./build.sh factorio

./start_server.sh factorio
# Or
docker run -it --net=host -e "SERVER_NAME=Some really cool server"\
-v `pwd`/save:`cat factorio/mounts` --name factorio factorio

Most servers have environment variables that can be used to configure them. Read the README.md file in each directory to see what is available.

Tutorial

There is a tutorial on the Open Source LAN website which will step you through building and using the images.

Contributions

Contributions are welcome. Submit a pull request or open an issue.

All additions should follow these suggestions:

  • Set up for LAN by default - eg, call +sv_lan 1 in srcds games, but optionally disabling that by runtime var is fine
  • Include a start script that is added to the container, so anyone using the Dockerfile can easily customise their server

Advanced networking stuff

We want to expose all game servers directly to our LAN, and the --host option means we will get port conflicts. There is an alternative approach which uses the ipvlan or macvlan docker network driver.

# Creates a docker network that's bridge with your layer 2 network
# Subnet should match the IP range and subnet of your network.
# ip-range is the CIDR block of IP addresses to assign to containers
# parent is the name of the interface you'd like to bridge containers to

docker network create --driver ipvlan --subnet=10.0.0.0/24 -o parent=eth0 --ip-range 10.0.0.16/28 --gateway 10.0.0.1  gameservers

# If the above command doesn't work, try using macvlan instead of ipvlan

# Starts your game server inside the layer 2 network
docker run -it --rm --net=gameservers csgo /steam/csgo/srcds_run -game csgo +sv_lan 1 +map cs_office

You can now see the CSGO server from another server on your network.

Running game servers on Docker Swarm

These are the instructions for building a swarm.

In addition to the swarm, one also needs a docker registry (I think).

These are the following gotchas that you need to be aware of:

  • If using ipvlan, you need experimental, not main release docker (as at version 1.12)
  • The ipvlan network is local scoped. This means you need to create the network on every host individually. You should ensure the assigned IP ranges for each host do not overlap, as there does not appear to be any shared state about IP addresses assigned. The name of the networks should be identical on every host.
  • The tutorial only has you set up a single consul instance. It will change IP addresses every time the container restarts, and this will cause consul to fail because it cannot elect itself leader, since it thinks another instance exists at a different IP address. Make sure to hard code an IP for it.
  • Using ubuntu 14.04, you'll need to update /etc/defaults/docker to contain: DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
  • If not using a secured docker registry, also add to the DOCKER_OPTS value: --insecure-registry=registry-hostname:5000
  • Consul, docker node and docker masters can all be on the same host (I think - it works for me at least)
  • To get a container to failover between hosts in the case of an outage, you need to run the container with these args: -e reschedule:on-node-failure (todo: figure out why the container doesn't get auto-started on the new host). Also note that a race condition exists - when the host comes back up, it will start the old container, and when the docker swarm manager container starts, it will detect the container was moved and kill it.

Setting up multiple consul hosts

Run the master like this:

docker run -d  -v /mnt:/data --name consul \
    -p 8300:8300 \
    -p 8301:8301 \
    -p 8301:8301/udp \
    -p 8302:8302 \
    -p 8302:8302/udp \
    -p 8400:8400 \
    -p 8500:8500 \
    -p 53:53/udp \
    progrium/consul -server -advertise 10.0.0.167 -bootstrap-expect 3

and the other two like this:

    docker run -d -v /mnt:/data --name consul \
    -p 8300:8300 \
    -p 8301:8301 \
    -p 8301:8301/udp \
    -p 8302:8302 \
    -p 8302:8302/udp \
    -p 8400:8400 \
    -p 8500:8500 \
    -p 53:53/udp \
    progrium/consul -server -advertise 10.0.0.197 -join 10.0.0.167

Double check all 3 are present in cluster by doing curl http://localhost:8500/v1/status/peers.

TODO

Ensure every instance has:

  • A README covering available options, startup scripts, etc
  • Auto-mount point support where appropriate (eg, for saves, demos)
  • Config options for at least:
    • The name of the server (what it shows as in server browsers)
    • Server password
    • RCON password (where RCON exists)
    • LAN or internet
  • Has dockerfile configured with default ports it exposes (not that the suggested configuration uses these)
  • Has a way to easily RCON or remote control
  • Does not require user to manually download everything (with exceptions for some large and customisable downloads)
  • Fix the thing where the auto mounts always have permission problems because conatiners

Make the easy start script support passing environment variables to the container

Make an easy way to import config files in to the servers (eg mounting cfg directories)

Add more games

LICENSE

This project is licensed under GPL 3.0. See LICENSE for more information.

gameservers-docker's People

Contributors

cerealcable avatar matthewh86 avatar mtdoyle avatar nicoplaysthings avatar propstg avatar sirsquidness avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gameservers-docker's Issues

Changing wreckfest server configuration

Hi !

I try to update the container when changing configuration in wreckfest/start_wreckfest.sh like server name etc
I tried to make "./build wreckfest" in root folder and started server with "./start_server.sh wreckfest" and the changes not reflected...
I needed to "docker system prune -a" and rebuild with "./build wreckfest" for the change take effect.

Or is there another way ?

Wreckfest Error! App '361580' state is 0x202 after update job.

hello, when I use ./build.sh wreckfest
I got this message
Connecting anonymously to Steam Public...Logged in OK Waiting for user info...OK "@sSteamCmdForcePlatformType" = "windows" Update state (0x3) reconfiguring, progress: 0.00 (0 / 0) Update state (0x3) reconfiguring, progress: 0.00 (0 / 0) Error! App '361580' state is 0x202 after update job.
The command '/bin/sh -c ./steamcmd.sh +login anonymous +@sSteamCmdForcePlatformType windows +force_install_dir ../wreckfest +app_update 361580 +quit' returned a non-zero code: 8

Wreckfest not working

wine: created the configuration directory '/home/steam/.wine'
002c:fixme:winediag:__wine_start_process Wine Staging 5.15 is a testing version containing experimental patches.
002c:fixme:winediag:__wine_start_process Please mention your exact version when filing bug reports on winehq.org.
0048:err:explorer:initialize_display_settings Failed to query current display settings for L"\\\\.\\DISPLAY1".
0048:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0048:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002
0048:err:ole:get_local_server_stream Failed: 80004002
0050:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0050:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
0050:err:ole:apartment_createwindowifneeded CreateWindow failed with error 183
0050:err:ole:apartment_createwindowifneeded CreateWindow failed with error 0
0050:err:ole:apartment_createwindowifneeded CreateWindow failed with error 14007
0050:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x800736b7
0050:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x800736b7
0050:err:ole:get_local_server_stream Failed: 800736b7
002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
002c:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0040:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0058:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
0060:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0060:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
Could not find Wine Gecko. HTML rendering will be disabled.
0094:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0094:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
009c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
009c:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
Could not find Wine Gecko. HTML rendering will be disabled.
00bc:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\wineusb": c0000142
002c:err:setupapi:SetupDiInstallDevice Failed to start service L"wineusb" for device L"ROOT\\WINE\\WINEUSB", error 1114.
wine: configuration in L"/home/steam/.wine" has been updated.
0024:fixme:file:NtLockFile I/O completion on lock not implemented yet
00d8:fixme:process:CreateProcessInternalW Unsupported attribute 0x20002.
00e0:fixme:process:SetProcessShutdownParameters (00000100, 00000001): partial stub.
00e0:fixme:file:NtLockFile I/O completion on lock not implemented yet
00e4:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
00e4:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
[220:228:20200816,095843.123:ERROR session_end_watcher.cc:171] CreateWindow: Success. (0)
0108:fixme:ver:GetCurrentPackageId (0031FE34 00000000): stub
011c:fixme:ver:GetCurrentPackageId (1818FEFC 00000000): stub
Commands:
    list - print player list
    bans - print ban list
    admins - print list of user privileges
    clearusers - clear user privileges
    tracks - list tracks
    gamemodes - list game modes
    cars - list cars
    weathers - list weathers
    exit - close application
    ? - list server and event modifiers
Chat commands:
    /message [new message] - send a message to the chat
    /kick [id] - kick a player
    /ban [id] - ban a player
    /bansteamid [steam id] - ban a steam id
    /unban [ban index] - lift a ban, use "bans" for ban indices
    /unbansteamid [steam id] - lift a ban by steam id
    /clearbans - clear all bans
    /balanceteams - balance teams
    /restart - server restart
    /bot - add a bot
    /op [id] - add moderator privileges
    /opsteamid [steam id] - add moderator privileges by steam id
    /admin [id] - add admin privileges
    /adminsteamid [steam id] - add admin privileges by steam id
    /demote [id] - clear admin and moderator privileges
    /demotesteamid [steam id] - clear admin and moderator privileges by steam id
    /password [new password] - set password
    /servername [new server name] - set name of the server
    /welcome [new welcome message] - set the welcome message
    /eventloop - toggle automatic event rotation if configured
* 09:58:53 Starting server...
0024:fixme:ntdll:EtwEventRegister ({47a9201e-73b0-42ce-9821-7e134361bc6f}, 3F006C40, 3F04C208, 3F04C200) stub.
0024:fixme:ntdll:EtwEventRegister ({58a9201e-73b0-42ce-9821-7e134361bc70}, 3F006C40, 3F04C240, 3F04C238) stub.
0024:fixme:ntdll:EtwEventRegister ({3fa9201e-73b0-43fe-9821-7e145359bc6f}, 3F006C40, 3F04C1D0, 3F04C1C8) stub.
0024:fixme:ntdll:EtwEventRegister ({1432afee-73b0-42ce-9821-7e134361b433}, 3F006C40, 3F04C278, 3F04C270) stub.
0024:fixme:ntdll:EtwEventRegister ({4372afee-73b0-42ce-9821-7e134361b519}, 3F006C40, 3F04C2B0, 3F04C2A8) stub.
0024:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
0130:fixme:iphlpapi:NotifyAddrChange (Handle 0x18f001ec, overlapped 0x18f001f0): stub
014c:fixme:wbemprox:wbem_locator_ConnectServer unsupported flags
014c:fixme:wbemprox:client_security_SetBlanket 6795E768, 10CD3660, 10, 0, (null), 3, 3, 00000000, 0x00000000
014c:fixme:wbemprox:client_security_Release 6795E768
0088:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled
0088:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled
014c:fixme:wbemprox:enum_class_object_Next timeout not supported
0088:fixme:mountmgr:query_property Faking StorageDeviceProperty data
0088:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled
0088:fixme:mountmgr:query_property Faking StorageDeviceProperty data
0088:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled
* 09:58:54 Server creation failed. Is Steam client running?
process 29: arguments to dbus_connection_send_with_reply_and_block() were incorrect, assertion "connection != NULL" failed in file ../../dbus/dbus-connection.c line 3543.
This is normally a bug in some application using the D-Bus library.
process 29: arguments to dbus_connection_send_with_reply_and_block() were incorrect, assertion "connection != NULL" failed in file ../../dbus/dbus-connection.c line 3543.
This is normally a bug in some application using the D-Bus library.
0130:fixme:winsock:WS_setsockopt SO_SNDBUF ignoring request to disable send buffering
process 29: arguments to dbus_connection_send_with_reply_and_block() were incorrect, assertion "connection != NULL" failed in file ../../dbus/dbus-connection.c line 3543.
This is normally a bug in some application using the D-Bus library.
process 29: arguments to dbus_connection_send_with_reply_and_block() were incorrect, assertion "connection != NULL" failed in file ../../dbus/dbus-connection.c line 3543.
This is normally a bug in some application using the D-Bus library.

The display issues could be fixed by giving (error 0050):

Xvfb :0 -screen 0 1024x768x16 &

Am i'm doing something wrong?
I only run ./build.sh wreckfest and ./start_server.sh wreckfest

Change in CSGO, server now needs installed lib32stdc++6

I tried to run the csgo-comp container, but the log shows this:
"Failed to open dedicated.so (libstdc++.so.6: cannot open shared object file: No such file or directory)"

after som search i found this:
https://forums.alliedmods.net/showthread.php?t=305133

Down the thread asdfxD writes that you just have to install lib32stdc++6
done like this: apt-get install lib32stdc++6

i have my self just added the lib to the base image and rebuild all the containers

Issue - Wreckfest installation

Hello!

Installing Wreckfest gives a ton of errors:
Package iproute2 is not available
Package unzip is not available
Package lib32gcc1 is not available
and
pull access denied for base, repository does not exist or may require 'docker login'
pull access denied for steamcmd, repository does not exist or may require 'docker login'
pull access denied for wine, repository does not exist or may require 'docker login'

OS: Azure Ubuntu image version 18.04

Wreckfest failing to start on headless server

I've tested running the server locally in an Ubuntu Desktop vm, and it started just fine.
Whenever I try to run the image on my headless docker server, it is unable to detect a display.

wreckfest-wreckfest-1  | wine: created the configuration directory '/home/steam/.wine'
wreckfest-wreckfest-1  | 002c:fixme:winediag:LdrInitializeThunk wine-staging 5.19 is a testing version containing experimental patches.
wreckfest-wreckfest-1  | 002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
wreckfest-wreckfest-1  | 0048:err:explorer:initialize_display_settings Failed to query current display settings for L"\\\\.\\DISPLAY1".
wreckfest-wreckfest-1  | 0048:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002
wreckfest-wreckfest-1  | 0048:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002
wreckfest-wreckfest-1  | 0048:err:ole:apartment_get_local_server_stream Failed: 0x80004002
wreckfest-wreckfest-1  | 002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 002c:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | 0050:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 0050:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | 0050:err:ole:apartment_createwindowifneeded CreateWindow failed with error 0
wreckfest-wreckfest-1  | 0050:err:ole:apartment_createwindowifneeded CreateWindow failed with error 0
wreckfest-wreckfest-1  | 0050:err:ole:apartment_createwindowifneeded CreateWindow failed with error 14007
wreckfest-wreckfest-1  | 0050:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x800736b7
wreckfest-wreckfest-1  | 0050:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x800736b7
wreckfest-wreckfest-1  | 0050:err:ole:apartment_get_local_server_stream Failed: 0x800736b7
wreckfest-wreckfest-1  | 0050:err:ole:start_rpcss Failed to open RpcSs service
wreckfest-wreckfest-1  | 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 0040:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | 0060:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 0060:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | 0068:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 0068:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | Could not find Wine Gecko. HTML rendering will be disabled.
wreckfest-wreckfest-1  | 009c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 009c:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | 00a4:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 00a4:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | Could not find Wine Gecko. HTML rendering will be disabled.
wreckfest-wreckfest-1  | 00cc:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\wineusb": c0000142
wreckfest-wreckfest-1  | 002c:err:setupapi:SetupDiInstallDevice Failed to start service L"wineusb" for device L"ROOT\\WINE\\WINEUSB", error 1114.
wreckfest-wreckfest-1  | wine: configuration in L"/home/steam/.wine" has been updated.
wreckfest-wreckfest-1  | 0024:fixme:file:NtLockFile I/O completion on lock not implemented yet
wreckfest-wreckfest-1  | 00f0:fixme:file:NtLockFile I/O completion on lock not implemented yet
wreckfest-wreckfest-1  | 00f0:fixme:process:SetProcessShutdownParameters (00000100, 00000001): partial stub.
wreckfest-wreckfest-1  | 00f4:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 00f4:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | 0124:fixme:ver:GetCurrentPackageId (1BB3FEE8 00000000): stub
wreckfest-wreckfest-1  | 012c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
wreckfest-wreckfest-1  | 012c:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
wreckfest-wreckfest-1  | 012c:err:wineconsole:WINECON_Init failed to init.
wreckfest-wreckfest-1  | 00f0:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 007AFEA4
wreckfest-wreckfest-1 exited with code 0

Request: Web Manager

It would be nice if there was a web interface for the docker so you could pick which game servers you wanted to run and they just were downloaded installed and configured automatically. So they basically just work then you could edit the configs if needed to customize them.

Left for dead

Found this awesome project, looks great but wondering how difficult it is to add left4dead?

Cheers!

Request - ARK server

I notice you have ARK listed in your TODO file. I would like to express interest in having that implemented. I am hoping to use this repo to set up several servers, and ARK is the only one I find missing.

Thanks for your work!

wine: cannot find L"server/Wreckfest.exe"

Hi!
I don't know if im just stupid or what.
But after i build the wreckfest image and try to run it. I get an error saying that the Wreckfest.exe file does not exist.
And i can't attach to the docker because it gets stuck in a restarting loop.

If anyone could help that would be great

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.