gangefors / docker-airdcpp-webclient Goto Github PK
View Code? Open in Web Editor NEWAirDC++ Web Client Docker image
Home Page: https://hub.docker.com/r/gangefors/airdcpp-webclient/
License: MIT License
AirDC++ Web Client Docker image
Home Page: https://hub.docker.com/r/gangefors/airdcpp-webclient/
License: MIT License
A user should be able to alter the UMASK used by the application. This will allow for writing files with other permissions than the default 644 (umask 0022).
Inspiration can be taken from https://github.com/coppit/docker-inotify-command/blob/master/runas.sh
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?
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...)
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"
Tried the following:
Not being able to go past the login, unable to use the image at this moment.
Machine = Synology 1815+, 16Gb
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.
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!
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.)
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.
using Unraid, everytime the docker updates, I lose my settings such as users/hubs etc, and the admin password gets defaulted back to original.
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.
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.
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.
I want to start using github actions, or other publicly available CI system, to build the image on new releases.
I would also like this pipeline to build for multiple platforms. Preferrably for all platforms that have a pre-built release.
Ran container on root via ssh and can't logon via any added users (the --add-user command) or the default admin password. No matter what I get the 'Authentication failed: Invalid username or password'
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.
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...
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 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
I lose my Notes when the client crashes og shuts down.
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.
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:
`
the 'Data Storage' field seems to be there twice as well now.
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.
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).
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.
-v $HOME/Downloads:/Downloads \
-v $HOME/Share:/Share \
Should be a volume in docker-compose.yml as well.
Is it possible to set PUID & PGID somehow?
It will make it easier to run the application by just running docker-compose up
.
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"
Use Github Actions and create images that are multi-arch.
Use the prebuilt binary that is available for AMR7.
https://web-builds.airdcpp.net/stable/airdcpp_latest_master_armhf_portable.tar.gz
Maybe even make it possible to generate certs during startup if none are provided?
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.