SwerpBox, a seedbox and media center combined with the power of 🐳 Docker.
- Prerequisites
- Getting Started
* Fresh
* Existing - Overview
- Commands
- Advanced Configuration
- Containers
* Frontend
* rTorrent / ruTorrent
* Deluge
* Plex
* PlexPy
* Resilio Sync
* Sonarr - Credits
Detailed documentation for containers is located within the docs folder. Clicking the link above will take you there.
To run this application you need Docker Engine 1.10.0+ and Docker Compose with a version 1.6.0 or later.
If you don't have Docker installed and are running Ubuntu or Debian, you may use the setup script, setup-docker.sh
. It will install Docker and Docker Compose for you.
bash setup-docker.sh
SSH into your fresh server as the root user. Clone this repository with git clone https://github.com/strues/swerpbox.git
.
Edit the config.sh file in the bootstrap/lib
directory and adjust the settings as you see fit, namely the following variables:
- SERVER_IP
- SERVER_HOSTNAME
- USER_LOGIN
- USER_PASS
Note: for the minimum amount of potential problems, I recommend leaving the USER_LOGIN as swerp.
Run ./bootstrap/bootstrap.sh
and let it do its thing.
The script will create a mostly complete .env
file for you in the home directory of the user defined by the USER_LOGIN
variable. All of the SwerpBox files will be placed in the home directory as well.
See the README for detailed instructions.
Clone this repository or upload the contents of the repository to your web server. Where you place the SwerpBox files is where all the fun happens. I recommend working out of your home directory.
Example: /home/<USER>/swerpbox
Create a copy of the environment variables file with cp env_example .env
and fill in the information to match with your environment.
The variables PGID, PUID, PLEX_UID, and PLEX_GUID must be set to the ids of the user running SwerpBox. If you aren't sure what the values of your user account are, you can find them by typing id $(whoami)
on your server.
The output will look like this:
uid=1000(swerp) gid=1000(swerp) groups=1000(swerp)
It is crucial to set PGID and PUID variables to the values matching the user running SwerpBox.
Note: The file buildall.sh
is meant for CI services. To start everything just run, make start or docker-compose up -d
The create-user.sh
script will create a user and group named swerp, set the GID and UID, and create the .env
file for you.
Running make help
lists all commands available to you.
Nginx 1.11.9 compiled from source with Brotli compression and HTTP/2 support.
The nginx default host configuration is setup for you. Located in srv/nginx/vhost.d/site.conf
. See the advanced configuration below for specifics on
how to setup reverse proxies for enabled services.
Available variables:
TZ
: Your timezone. Default: America/DenverPUID
: User UID. Default: 1000PGID
: User group id. Default: 1000
Volumes:
./srv/nginx:/etc/nginx
: Nginx configuration../srv/public:/var/www/public
: Web root for the frontend.
ruTorrent and rTorrent with Autodl-Irssi running on Alpine Linux. Compiled with Media Info.
Includes PHP7.
RuTorrent is accessible via http://YOUR.IP.ADDR.ESS/rutorrent/
Available variables:
TZ
: Your timezone. Default: America/DenverPUID
: User UID. Default: 1000PGID
: User group id. Default: 1000
Volumes:
./data:/data
: Location of saved files../logs:/logs
: Logs for php and rTorrent../srv/public:/var/www/public/rutorrent
: ruTorrent created in this container with autodl-irssi. Actually served from frontend../config:/config
: Configs for php, rTorrent, irssi, and autodl.
This container runs the Deluge BitTorrent daemon and the web ui. To learn more, visit the Deluge website.
Deluge is accessible via http://YOUR.IP.ADDR.ESS/deluge
Available variables:
TZ
: Your timezone. Default: America/DenverPUID
: User UID. Default: 1000PGID
: User group id. Default: 1000
Please checkout the Deluge docs section located here for initial configuration instructions.
Uses the official Plex Docker image. Checkout the readme here
Plex is accessible via http://YOUR.IP.ADDR.ESS:3400/web
The default library location is ./media
Available variables:
TZ
: Your timezone. Default: America/DenverPLEX_CLAIM
: Plex claim token. Get it from: https://plex.tv/claimADVERTISE_IP
: Server IP address for Plex. Default: http://127.0.0.1:32400PLEX_UID
: User UID. Default: 1000PLEX_GID
: User group id. Default: 1000CHANGE_CONFIG_DIR_OWNERSHIP
: Change directory ownership. Default: false
The Sonarr container runs on Ubuntu 16.04 via Mono
Sonarr is accessible via http://YOUR.IP.ADDR.ESS:8989
Available variables:
TZ
: Your timezone. Default: America/DenverPUID
: User UID. Default: 1000PGID
: User group id. Default: 1000
Volumes:
./config/sonarr:/config
: Where the config files are stored../data:/data
: Entire directory of all files. Used to mount the complete folder../data/downloading:/downloads
: Where downloading torrents are located./media/TV Shows:/tv
: Location of media directory, where Plex reads from. Sonarr hardlinks complete files here.
Dropped in favor of Sonarr, but still included incase you prefer it.
SickRage is accessible via http://YOUR.IP.ADDR.ESS:8081
Available variables:
TZ
: Your timezone. Default: America/DenverPUID
: User UID. Default: 1000PGID
: User group id. Default: 1000
Sync uses peer-to-peer technology to provide fast, private file sharing for teams and individuals. By skipping the cloud, transfers can be significantly faster because files take the shortest path between devices. Sync does not store your information on servers in the cloud, avoiding cloud privacy concerns.
Web interface visible at http://YOUR.IP.ADDR.ESS:8888
Directories mounted for sync in /data/
Available variables:
TZ
: Your timezone. Default: America/DenverPUID
: User UID. Default: 1000PGID
: User group id. Default: 1000
I give credit where it's due and would like to give a shoutout to LinuxServer.io. Parts of their Dockerfiles were borrowed and modified for this seedbox setup.