{"id":19309895,"url":"https://github.com/fletchto99/nicotine-plus-docker","last_synced_at":"2025-04-22T13:33:39.848Z","repository":{"id":182424130,"uuid":"668471034","full_name":"fletchto99/nicotine-plus-docker","owner":"fletchto99","description":"A docker image for nicotine plus","archived":false,"fork":false,"pushed_at":"2025-03-13T18:11:30.000Z","size":55,"stargazers_count":43,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T00:23:10.740Z","etag":null,"topics":["docker","docker-container","docker-image","nicotine-plus","soulseek","soulseek-vnc"],"latest_commit_sha":null,"homepage":"https://nicotine-plus.org/","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fletchto99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-19T22:23:44.000Z","updated_at":"2025-03-13T18:11:35.000Z","dependencies_parsed_at":"2025-03-13T19:45:13.580Z","dependency_job_id":null,"html_url":"https://github.com/fletchto99/nicotine-plus-docker","commit_stats":null,"previous_names":["fletchto99/nicotine-plus-docker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fletchto99%2Fnicotine-plus-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fletchto99%2Fnicotine-plus-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fletchto99%2Fnicotine-plus-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fletchto99%2Fnicotine-plus-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fletchto99","download_url":"https://codeload.github.com/fletchto99/nicotine-plus-docker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250249026,"owners_count":21399377,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-container","docker-image","nicotine-plus","soulseek","soulseek-vnc"],"created_at":"2024-11-10T00:21:24.647Z","updated_at":"2025-04-22T13:33:39.579Z","avatar_url":"https://github.com/fletchto99.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nicotine-plus-docker\n\n![GHCR Build Status](https://github.com/fletchto99/nicotine-plus-docker/actions/workflows/ghcr.yml/badge.svg)\n![Docker Build Status](https://github.com/fletchto99/nicotine-plus-docker/actions/workflows/docker.yml/badge.svg)\n![Docker Pulls](https://img.shields.io/docker/pulls/fletchto99/nicotine-plus-docker)\n\n[Nicotine-plus](https://nicotine-plus.org/) is an open source graphical client for the Soulseek peer-to-peer network. As per their website, Nicotine+ aims to be a pleasent, Free and Open Source (FOSS) alternative to the official Soulseek client, providing additional functionality while keeping current with the Soulseek protocol.\n\n## Application Setup\n\nThis image sets up the nicotine+ desktop app and makes its interface available via Guacamole server in the browser. The interface is available at `http://your-ip:6080`.\n\nBy default, there is no password set for the main gui. Optional environment variable `PASSWORD` will allow setting a password for the user `abc`, via http auth.\n\n### Options in all KasmVNC based GUI containers\n\nThis container is based on LinuxServer's [Docker Baseimage KasmVNC](https://github.com/linuxserver/docker-baseimage-kasmvnc) which means there are additional environment variables and run configurations to enable or disable specific functionality.\n\n#### Optional environment variables\n\n| Variable | Description |\n| :----: | --- |\n| CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default 6080. |\n| LISTENING_PORT | Listening Port allows other peers on the network to connect to your client and share files. Default is 2234. |\n| CUSTOM_USER | HTTP Basic auth username, abc is default. |\n| PASSWORD | HTTP Basic auth password, abc is default. If unset there will be no auth |\n| SUBFOLDER | Subfolder for the application if running a subfolder reverse proxy, need both slashes IE `/subfolder/` |\n| TITLE | The page title displayed on the web browser, default \"KasmVNC Client\". |\n| FM_HOME | This is the home directory (landing) for the file manager, default \"/config\". |\n| START_DOCKER | If set to false a container with privilege will not automatically start the DinD Docker setup. |\n| DRINODE | If mounting in /dev/dri for [DRI3 GPU Acceleration](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) allows you to specify the device to use IE `/dev/dri/renderD128` |\n\n#### Optional run configurations\n\n| Variable | Description |\n| :----: | --- |\n| `--privileged` | Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE `-v /home/user/docker-data:/var/lib/docker`. |\n| `-v /var/run/docker.sock:/var/run/docker.sock` | Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. |\n| `--device /dev/dri:/dev/dri` | Mount a GPU into the container, this can be used in conjunction with the `DRINODE` environment variable to leverage a host video card for GPU accelerated appplications. Only **Open Source** drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau) |\n\n### Lossless mode\n\nThis container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information [here](https://www.kasmweb.com/docs/latest/how_to/lossless.html#technical-background). If using a reverse proxy to port 80860800 specific headers will need to be set as outlined [here](https://github.com/linuxserver/docker-baseimage-kasmvnc#lossless).\n\n## Usage\n\nHere are some example snippets to help you get started creating a container.\n\n### docker-compose (recommended)\n\n```yaml\n---\nversion: \"2.1\"\nservices:\n  nicotine-plus:\n    image: ghcr.io/fletchto99/nicotine-plus-docker:latest\n    container_name: nicotine-plus\n    security_opt:\n      - seccomp:unconfined #optional\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - TZ=Etc/UTC\n      - PASSWORD= #optional\n    volumes:\n      - /path/to/data:/config\n      - /path/to/downloads:/data/downloads\n      - /path/to/incomplete:/data/incomplete_downloads\n      - /path/to/shared:/data/shared #optional\n    ports:\n      - 6080:6080\n      - 2234-2239:2234-2239\n    restart: unless-stopped\n```\n\n### docker cli\n\n```bash\ndocker run -d \\\n  --name=nicotine-plus \\\n  --security-opt seccomp=unconfined `#optional` \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Etc/UTC \\\n  -e PASSWORD= `#optional` \\\n  -p 6080:6080 \\\n  -p 2234-2239:2234-2239 \\\n  -v /path/to/data:/config \\\n  -v /path/to/downloads:/data/downloads \\\n  -v /path/to/incomplete:/data/incomplete_downloads \\\n  -v /path/to/shared:/data/shared `#optional` \\\n  --restart unless-stopped \\\n  ghcr.io/fletchto99/nicotine-plus-docker:latest\n\n```\n\n## Parameters\n\nContainer images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `\u003cexternal\u003e:\u003cinternal\u003e` respectively. For example, `-p 6080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `6080` outside the container.\n\n| Parameter | Function |\n| :----: | --- |\n| `-p 6080` | Nicotine plus desktop gui. |\n| `-p 2234-2239` | Nicotine plu P2P Ports. |\n| `-e PUID=1000` | for UserID - see below for explanation |\n| `-e PGID=1000` | for GroupID - see below for explanation |\n| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |\n| `-e PASSWORD=` | Optionally set a password for the gui. |\n| `-v /config` | Where nicotine plus should store configuration and queue data. |\n| `-v /data/downloads` | Where nicotine plus should store complete downloads |\n| `-v /data/incomplete_downloads` | Where nicotine plus should store data during the download process |\n| `-v /data/shared` | A location for you to share data (files/folders) on nicotine plus. |\n| `--security-opt seccomp=unconfined` | For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker. |\n\n## Environment variables from files (Docker secrets)\n\nYou can set any environment variable from a file by using a special prepend `FILE__`.\n\nAs an example:\n\n```bash\n-e FILE__PASSWORD=/run/secrets/mysecretpassword\n```\n\nWill set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.\n\n## Umask for running applications\n\nFor all of our images we provide the ability to override the default umask settings for services started within the containers using the optional `-e UMASK=022` setting.\nKeep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up [here](https://en.wikipedia.org/wiki/Umask) before asking for support.\n\n## User / Group Identifiers\n\nWhen using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.\n\nEnsure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.\n\nIn this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:\n\n```bash\n  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n```\n\n## Support Info\n\n* Shell access whilst the container is running: `docker exec -it nicotine-plus /bin/bash`\n* To monitor the logs of the container in realtime: `docker logs -f nicotine-plus`\n* container version number\n  * `docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nicotine-plus-docker`\n* image version number\n  * `docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ghcr.io/fletchto99/nicotine-plus-docker:latest`\n\n## Building locally\n\nIf you want to make local modifications to these images for development purposes or just to customize the logic:\n\n```bash\ngit clone https://github.com/fletchto99/nicotine-plus-docker.git\ncd nicotine-plus-docker\ndocker build \\\n  --no-cache \\\n  --pull \\\n  -t ghcr.io/fletchto99/nicotine-plus-docker:latest .\n```\n\n## Versions\n\n* **19.07.23:** - Initial release.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffletchto99%2Fnicotine-plus-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffletchto99%2Fnicotine-plus-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffletchto99%2Fnicotine-plus-docker/lists"}