Coder Social home page Coder Social logo

gangefors / docker-airdcpp-webclient Goto Github PK

View Code? Open in Web Editor NEW
31.0 31.0 13.0 111 KB

AirDC++ Web Client Docker image

Home Page: https://hub.docker.com/r/gangefors/airdcpp-webclient/

License: MIT License

Dockerfile 39.69% Shell 60.31%
airdcpp docker docker-compose linux webclient x64

docker-airdcpp-webclient's People

Contributors

gangefors avatar psych0d0g 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-airdcpp-webclient's Issues

Keeping messages after restart

I've found that whenever my AirDC++ docker container restarts the contents of any message conversations I've had is erased and I'm wondering if there is a way to prevent this. I've missed receiving a number of messages that were received while I was away from my computer because the container restarted before I had a chance to read them and so erased the unread messages. Any ideas?

Root Check and Podman

in podman, the default behavoir for a rootless container is that container root is the same user as the one calling the podman run command. If you set a new user inside using either --user or the useradd -u ${PUID} -g ${PGID} --no-create-home -s /usr/sbin/nologin airdcpp trick the script uses, it maps to a new outside user (at least that's my understanding). These users then usually have no permissions in the file where they should write.
Therefore, terminating root containers has the side effect of forbidding nonroot podman use. In my fork, I've added a simple check for podman usage (according to this instruction containers/podman#3586), but my systems all only run podman, not docker due to cgroups v2, so my pull request should be checked by someone actually running docker...)

Authentication failed: Cannot connect to the server

Dear Gangefors,

After updating the docker application on my synology to latest version - I have been able to install this image file and create a volume and container successfully.

Using secure access (https) I come to the login page, and following what is written in the website and as well what is found in the WebServer.xml file, I enter admin / password as login.

And here is where I get stuck at this moment - because the server gives me:

"Authentication failed: Cannot connect to the server"

image

Tried the following:

  • removing the container, and re-add it - same message
  • removing all of docker and reinstall - same message
  • manually edit the webserver.xml file - same message
  • going back to v 1.41 - same message
  • different browsers - same message
  • going back to http instead of https - same message

Not being able to go past the login, unable to use the image at this moment.

Machine = Synology 1815+, 16Gb

Conflicting default port

The web management port used in the instructions (80) differs from the default port used by the application itself and is likely to cause conflicts with generic web servers. I've intentionally chosen to use non-standard ports to avoid conflicts with other services, which generally is what other applications hosting their own web management interface are doing as well.

Fails to Start: "Year is out of valid range"

I've built an armhf image, which has worked successfully for me on Rapsbian (32-bit ARM), but just doesn't seem to work on Armbian 64-bit.

It must be something silly, but I can't figure it out:

My docker-compose:

    airdcpp:
        container_name: airdcpp
        build:
            context: https://github.com/gangefors/docker-airdcpp-webclient.git
            args:
                dl_url: "https://web-builds.airdcpp.net/stable/airdcpp_latest_master_armhf_portable.tar.gz"
        volumes:
            - /media/storage/config/airdcpp:/.airdcpp
            - /media/storage/Media:/Media
        user: ${PUID}:${PGID}
        environment:
            - PGID=${PGID}
            - PUID=${PUID}
            - TZ=${TZ}

When I start it up, AirDC++ fails to start with only the following in the log:

Starting.,
,
FATAL: Can't start AirDC++ Web Client: Year is out of valid range: 1400..9999,
.

Any help would be greatly appreciated!

Fix umask validation to conform to posix standards

currently the container assumes that umask values are always specified with 4 digits where the first one is a leading 0,
see: https://github.com/gangefors/docker-airdcpp-webclient/blob/master/entrypoint.sh#L68

according to posix standards for umask, it is totally valid to specify a single digit umask, since ommited digits are assumed to be 0 and filled up, see: https://man.cx/umask(1) (excerpt: The string is treated in the same way as the mode operand described in the EXTENDED DESCRIPTION section for chmod)

for the extended description on chmod see: https://man.cx/chmod (excerpt: A numeric mode is from one to four octal digits (0-7), derived by adding up the bits with values 4, 2, and 1. Omitted digits are assumed to be leading zeros.)

Container exits immediately after starting

I needed to update my container recently and noticed that all versions after 2.11.0 exists immediately after being started. All versions exits with exit code 1.

2.11.0 seems to run perfectly but all versions after that seems to exit immediately.
I tried a fork of your repository made by: Tarirah that worked, but that fork is based on 2.11.2 and not the latest version.

https://github.com/Tarirah/docker-airdcpp-webclient
https://registry.hub.docker.com/r/tarirah/airdcpp-webclient

My system:
Intel Celeron J3455 Processor (1.5Ghz)
4GB Ram

Have not tested this on other systems to see if I could replicate this on other machines.

Docker update wipes out settings

using Unraid, everytime the docker updates, I lose my settings such as users/hubs etc, and the admin password gets defaulted back to original.

Using Synology Docker... how to upgrade?

Hi, Would like to know how to upgrade from 2.2.1 to 2.30 using the docker interface. Not much info out there. following some generic advice i managed to upgrade the image but then lost all the config info (Fave Hubs, HashDB, Share info etc) would like to know how to preserve that info to make docker CORE images easy to download and setup.

Restrictive file permissions over network share in Unraid

First and foremost, thanks a bunch for building and supporting this image, it's much appreciated!

Unfortunately, I seem to be having permission issues when running the container on Unraid 6.9.2. Downloaded files/directories seem to be created with the write ownership, but with the wrong permissions, for example:

-rw-r--r-- 1 nobody users  17168919 May  5 00:55 Game\ Launcher\ (World)\ (v6.0.03.1).zip
-rw-r--r-- 1 nobody users   1833590 May  5 00:55 Game\ Optimizing\ Service\ (World)\ (v3.1.24).zip

When mounting this directory over a network share via SMB to a Windows client, I'm unable to write/modify the files/directories, despite the SMB user having the appropriate permissions for the network share.

The only changes I've made from the default configuration are setting up alternate share volume mounts, and I route the network through a VPN container.

UID & GID

Running this on unRAID and everything is working great except permission issues on files downloaded to the download folder. Files are created with root permission only.

FYI - When I first configured it, I didn't use UID & GID. Now that I am using it, it still creating files with root permission only.

unRAID uses 99:100 for nobody:users

Here is the config:

run -d --name='AirDC' --net='host' -e TZ="America/Denver" -e HOST_OS="Unraid" -e 'UID'='99' -e 'GID'='100' -v '/mnt/user/downloads/isVideo Downloads/':'/Downloads':'rw' -v '/mnt/user/media/':'/Share':'rw' -v '/mnt/user/appdata/AirDC':'/.airdcpp':'rw' 'gangefors/airdcpp-webclient'

Any help much appreciated.

Old node.js version

Hello,

nice work on the image. Unfortunately it seems your commands to get a current version of node.js don't seem to work, because it runs on version 4.8.2. At least my container (latest tag).

Not really sure why though.
Executing the "https://deb.nodesource.com/setup_8.x" script in the container fails at command curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - with "E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation", so that might be a reason.

handle_transport_init received error: TLS handshake failed

First off, thank you for providing this docker. I have it up and running but I get this continual message:
[2022-01-12 04:59:08] [http] 127.0.0.1:56234 10.0.3.1:36716 "GET / HTTP/1.1" 404 72 "python-requests/2.25.0"
[2022-01-12 04:59:08] [error] handle_transport_init received error: TLS handshake failed
[2022-01-12 04:59:08] [fail] WebSocket Connection 10.0.3.1:34274 - "" - 0 websocketpp.transport.asio.socket:8 TLS handshake failed

I'm running this docker on a Qnap TS-877 using Qnap's application - Container Station. I thought the error might be being caused by user privileges but I've triple-checked folder privileges. Any insight on what I may be doing wrong would be greatly appreciated. This error has not stopped the application from working. I am able to login to the WebUI and use Airdc but it doesn't seem like a good practice to use a program that pings a continual error message.

Let me know if you need other documentation. Caveat: I am not a programmer and am fairly green but I have managed to get a number of containers running on Qnap...

Issue in daemon startup

Hi, was hoping to get some help with this. I'm trying to get this running on my server but the web server doesn't appear to be starting up. Checking the container logs, this is the only output I see:

Starting.

If I restart the container, I see this:

Starting.
.�
.

These are the commands I used to build the container:

sudo docker volume create --name airdcpp
sudo docker run -d --name airdcpp --restart unless-stopped \
    -p 5600:5600 -p 5601:5601 -p 21248:21248 -p 21248:21248/udp -p 21249:21249 \
    -u $(id -u):$(id -g) \
    -v airdcpp:/.airdcpp \
    -v /mnt/scratch:/Downloads \
    -v /mnt/vault:/Share \
    gangefors/airdcpp-webclient:latest

Here's a look at the resulting container:

{
    "AppArmorProfile": "docker-default",
    "Args": [],
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": null,
        "Domainname": "",
        "Entrypoint": [
            "./airdcppd"
        ],
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=en_US.UTF-8",
            "LANGUAGE=en_US:en",
            "LC_ALL=en_US.UTF-8"
        ],
        "ExposedPorts": {
            "21248/tcp": {},
            "21248/udp": {},
            "21249/tcp": {},
            "5600/tcp": {},
            "5601/tcp": {}
        },
        "Hostname": "e365a65473b4",
        "Image": "gangefors/airdcpp-webclient:latest",
        "Labels": {},
        "OnBuild": null,
        "OpenStdin": false,
        "StdinOnce": false,
        "Tty": false,
        "User": "1000:1000",
        "Volumes": {
            "/.airdcpp": {}
        },
        "WorkingDir": "/airdcpp-webclient"
    },
    "Created": "2020-07-13T18:46:32.393883744Z",
    "Driver": "overlay2",
    "ExecIDs": null,
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/2f520b0d3c69857876b69fb720acb122752abc9a7a47a3429909835b6ba4d534-init/diff:/var/lib/docker/overlay2/6c3af51eb9b6b1ca79e498fcbbfd04a2aa1845068cff5650bbe0e7ccbee6a126/diff:/var/lib/docker/overlay2/abe0acd4461442e32943a789966694d0f5afa5bb14ea78ab386d1a93272d3e33/diff:/var/lib/docker/overlay2/c25dcae8545ac559bac1c8d9cd9d5afef9492d1b55ee83698bf98922750141c1/diff:/var/lib/docker/overlay2/8469bd6cdc4bbe90b272685c1980412289345a43c240d2c66fcf428f90da4189/diff:/var/lib/docker/overlay2/6cafdc360bedc71d088a31546d174fb185b7889a3a78d16d38d6626e9a2f1ba7/diff:/var/lib/docker/overlay2/633f5ac1b886e4f9beb81466e6d731fea677435bd2cf1e39c1328067fd444533/diff",
            "MergedDir": "/var/lib/docker/overlay2/2f520b0d3c69857876b69fb720acb122752abc9a7a47a3429909835b6ba4d534/merged",
            "UpperDir": "/var/lib/docker/overlay2/2f520b0d3c69857876b69fb720acb122752abc9a7a47a3429909835b6ba4d534/diff",
            "WorkDir": "/var/lib/docker/overlay2/2f520b0d3c69857876b69fb720acb122752abc9a7a47a3429909835b6ba4d534/work"
        },
        "Name": "overlay2"
    },
    "HostConfig": {
        "AutoRemove": false,
        "Binds": [
            "/mnt/scratch:/Downloads",
            "/mnt/vault:/Share",
            "airdcpp:/.airdcpp"
        ],
        "BlkioDeviceReadBps": null,
        "BlkioDeviceReadIOps": null,
        "BlkioDeviceWriteBps": null,
        "BlkioDeviceWriteIOps": null,
        "BlkioWeight": 0,
        "BlkioWeightDevice": [],
        "CapAdd": null,
        "CapDrop": null,
        "Cgroup": "",
        "CgroupParent": "",
        "ConsoleSize": [
            0,
            0
        ],
        "ContainerIDFile": "",
        "CpuCount": 0,
        "CpuPercent": 0,
        "CpuPeriod": 0,
        "CpuQuota": 0,
        "CpuRealtimePeriod": 0,
        "CpuRealtimeRuntime": 0,
        "CpuShares": 0,
        "CpusetCpus": "",
        "CpusetMems": "",
        "DeviceCgroupRules": null,
        "Devices": [],
        "DiskQuota": 0,
        "Dns": [],
        "DnsOptions": [],
        "DnsSearch": [],
        "ExtraHosts": null,
        "GroupAdd": null,
        "IOMaximumBandwidth": 0,
        "IOMaximumIOps": 0,
        "IpcMode": "shareable",
        "Isolation": "",
        "KernelMemory": 0,
        "Links": null,
        "LogConfig": {
            "Config": {},
            "Type": "json-file"
        },
        "Memory": 0,
        "MemoryReservation": 0,
        "MemorySwap": 0,
        "MemorySwappiness": null,
        "NanoCpus": 0,
        "NetworkMode": "default",
        "OomKillDisable": false,
        "OomScoreAdj": 0,
        "PidMode": "",
        "PidsLimit": 0,
        "PortBindings": {
            "21248/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "21248"
                }
            ],
            "21248/udp": [
                {
                    "HostIp": "",
                    "HostPort": "21248"
                }
            ],
            "21249/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "21249"
                }
            ],
            "5600/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "5600"
                }
            ],
            "5601/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "5601"
                }
            ]
        },
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyRootfs": false,
        "RestartPolicy": {
            "MaximumRetryCount": 0,
            "Name": "unless-stopped"
        },
        "Runtime": "runc",
        "SecurityOpt": null,
        "ShmSize": 67108864,
        "UTSMode": "",
        "Ulimits": null,
        "UsernsMode": "",
        "VolumeDriver": "",
        "VolumesFrom": null
    },
    "HostnamePath": "/var/lib/docker/containers/e365a65473b48ffafc39e0f2b65dc9c651dfafc498be5afa4579a50a4764a02e/hostname",
    "HostsPath": "/var/lib/docker/containers/e365a65473b48ffafc39e0f2b65dc9c651dfafc498be5afa4579a50a4764a02e/hosts",
    "Id": "e365a65473b48ffafc39e0f2b65dc9c651dfafc498be5afa4579a50a4764a02e",
    "Image": "sha256:5d93796e19363fa49476d1cde8b89fd998b195bc1f865c09ca9f2b65b276e1c5",
    "LogPath": "/var/lib/docker/containers/e365a65473b48ffafc39e0f2b65dc9c651dfafc498be5afa4579a50a4764a02e/e365a65473b48ffafc39e0f2b65dc9c651dfafc498be5afa4579a50a4764a02e-json.log",
    "MountLabel": "",
    "Mounts": [
        {
            "Destination": "/Downloads",
            "Mode": "",
            "Propagation": "rprivate",
            "RW": true,
            "Source": "/mnt/scratch",
            "Type": "bind"
        },
        {
            "Destination": "/Share",
            "Mode": "",
            "Propagation": "rprivate",
            "RW": true,
            "Source": "/mnt/vault",
            "Type": "bind"
        },
        {
            "Destination": "/.airdcpp",
            "Driver": "local",
            "Mode": "z",
            "Name": "airdcpp",
            "Propagation": "",
            "RW": true,
            "Source": "/var/lib/docker/volumes/airdcpp/_data",
            "Type": "volume"
        }
    ],
    "Name": "/airdcpp",
    "NetworkSettings": {
        "Bridge": "",
        "EndpointID": "cb141eada561dcc8c6cc66a4be7a3850d249c1f8f9c6dbc032e130600ebb5259",
        "Gateway": "172.17.0.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "HairpinMode": false,
        "IPAddress": "172.17.0.19",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "MacAddress": "02:42:ac:11:00:13",
        "Networks": {
            "bridge": {
                "Aliases": null,
                "DriverOpts": null,
                "EndpointID": "cb141eada561dcc8c6cc66a4be7a3850d249c1f8f9c6dbc032e130600ebb5259",
                "Gateway": "172.17.0.1",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAMConfig": null,
                "IPAddress": "172.17.0.19",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "Links": null,
                "MacAddress": "02:42:ac:11:00:13",
                "NetworkID": "72ba47cf10591cd43b46a0707d1a5ae41df079ca0e26c588f34af582988eef69"
            }
        },
        "Ports": {
            "21248/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "21248"
                }
            ],
            "21248/udp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "21248"
                }
            ],
            "21249/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "21249"
                }
            ],
            "5600/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "5600"
                }
            ],
            "5601/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "5601"
                }
            ]
        },
        "SandboxID": "4f334d7a6e947d7ae0dcb8eb3cb889181f946d4817a6c02681a221cb10269ad6",
        "SandboxKey": "/var/run/docker/netns/4f334d7a6e94",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null
    },
    "Path": "./airdcppd",
    "Platform": "linux",
    "ProcessLabel": "",
    "ResolvConfPath": "/var/lib/docker/containers/e365a65473b48ffafc39e0f2b65dc9c651dfafc498be5afa4579a50a4764a02e/resolv.conf",
    "RestartCount": 0,
    "State": {
        "Dead": false,
        "Error": "",
        "ExitCode": 0,
        "FinishedAt": "2020-07-13T18:52:36.491829491Z",
        "OOMKilled": false,
        "Paused": false,
        "Pid": 5869,
        "Restarting": false,
        "Running": true,
        "StartedAt": "2020-07-13T18:52:37.545399621Z",
        "Status": "running"
    }
}

I tried using the latest-stretch image tag, using different volumes for /Share and /Download, and using the docker-compose setup method instead but got the same results in each scenario.
I'm running Docker 17.12.0-ce on Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-109-generic x86_64).

Any help would be much appreciated :)
Thanks!

I cannot install extensions

I try to install the airdcpp-share-monitor from catalogue or url and allways give me the same error.

Extension installation failed: Failed to load extension (Extension requires API feature level 6 or newer while the application uses version 0)

thanks

TSL error

After the update 2.7.0. One gets the following error when connecting to hubs using the protocol adcs or nmdc.
"TLS error: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol".

This was not the case with 2.6.1. Downgrading from 2.7.0. to 2.6.1 fixes the issue.

airdcpp wont start in new build. uid/gid issue

From building the docker image:
`Command:
root@localhost:# /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d --name='airdcpp' --net='proxy' -e TZ="America/Los_Angeles" -e HOST_OS="Unraid" -e 'UID'='0' -e 'GID'='0' -p '5600:5600/tcp' -p '5601:5601/tcp' -p '26489:21248/tcp' -p '26489:21248/udp' -p '26490:21249/tcp' -v '/mnt/user/appdata/airdcpp/':'/.airdcpp':'rw' -v '/mnt/user/incoming/':'/Downloads':'rw' -v '/mnt/user/':'/Share':'rw' -v '/mnt/user/appdata/airdcpp/':'/airdcpp':'rw' 'gangefors/airdcpp-webclient'

d9df0745c0c4e3f6924368369fd5facee01d96771d55985d137265979efaf67d

The command finished successfully!`

The error from log:
`

  • rm -f /.airdcpp/WebServer.xml.bak
  • [[ ! -r /.airdcpp/DCPlusPlus.xml ]]
    ++ id -u
  • [[ 0 -ne 0 ]]
  • [[ -z '' ]]
  • echo 'PUID and PGID variables must be set when container is run as root.'
  • exit 1
    PUID and PGID variables must be set when container is run as root.
  • rm -f /.airdcpp/WebServer.xml.bak
  • [[ ! -r /.airdcpp/DCPlusPlus.xml ]]
    ++ id -u
  • [[ 0 -ne 0 ]]
  • [[ -z '' ]]
  • echo 'PUID and PGID variables must be set when container is run as root.'
  • exit 1
    PUID and PGID variables must be set when container is run as root.`

screenshot from unraid:
screenshot

the 'Data Storage' field seems to be there twice as well now.

Problems with share cache

I continuously receive errors of this type

00:09:33
Share: Saving the share cache failed: std::bad_alloc
00:26:33
Share: Saving the share cache failed: std::bad_alloc
00:43:31
Share: Saving the share cache failed: std::bad_alloc
01:00:30
Share: Saving the share cache failed: std::bad_alloc
01:17:30
Share: Saving the share cache failed: std::bad_alloc
01:34:29
Share: Saving the share cache failed: std::bad_alloc
01:51:30
Share: Saving the share cache failed: std::bad_alloc
02:08:31
Share: Saving the share cache failed: std::bad_alloc
02:25:32
Share: Saving the share cache failed: std::bad_alloc
02:42:31
Share: Saving the share cache failed: std::bad_alloc
02:59:29

It's a new installation from scratch.

Bug: Can't start as unprivileged user

When i try to start as an unprivileged user with the command:

docker run -it --name airdcpp -p 80:5600 -v ~/.airdc++:/.airdc++ -v ~/Downloads:/Downloads -v ~/Shared:/Shared -u $(id -u):$(id -g) gangefors/airdcpp-webclient airdcppd -c /.airdc++

I see the following Error:

Starting.
Failed to create PID file //.airdcpp++/airdcpp.pid: Permission denied

That Path looks a little bit strange to me too (two slashes at the beginning).

Configure on first run

I,

I tried deploying the image, but on first run the container failed with this error message:

.No valid configuration found. Run the application with --configure parameter to set up initial configuration.

PUID - PGID

Is it possible to set PUID & PGID somehow?

Text duplication in chat

When writing a message in the chat, if I move the marker back to edit it, as soon as I hit space all the text in front of the marker is replaced with the full message.

For instance if I write:
"A test message"
And move back between 'a' and 'g' and hit space the message becomes:
"A test messa A test message"

Version in UNRAID Docker Container missing/broken

image

Not sure if this is an actual issue or just config on my side. I do not get version info on UNRAID Docker for this container. And does not show the container is up to date like my other docker images. Please advise?

New User added disappears when restarting the container

From the instructions >>

Add/modify admin users
To add/modify adminitrative users to the web interface, run the following.

docker run --rm -it -v airdcpp:/.airdcpp \gangefors/airdcpp-webclient --add-user

If the container was running you need to restart it for the changes to take effect.

docker restart airdcpp

This restart command however removes the just created user again.

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.