Skip to content
Selection of self-hosted Docker web apps
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ams
beat
code
data
dckr
dev
dns
faas
file
fin
get
git
gps
ipam
jump
know-alt
know
mail
meta
papr
pics
prxy
pvr-movies
pvr-series
safe
sss
trck
tube
.gitignore
LICENSE.md
README.md

README.md

About Wapps

This repository contains the docker-compose files to easily self-host the web apps for my personal use.

App Description Availability
prxy Reverse proxy based on Traefik private
dckr Docker management based on Portainer as GUI and Watchtower as auto-updater private
jump RDP gateway based on Guacamole public
papr Document archive based on Paperless public
trck Website analytics based on Matomo public
git Git repository management based on Gitea public
data Database management based on Adminer private
sss Simple storage app based on Minio public
meta Analytics based on Metabase public
fin Finance manager based on Firefly III public
ipam IP address management (IPAM) based on phpipam public
get Static file server based on Caddy public
faas Function as a Service based on IronFunctions public (private GUI)
know Wiki and blog based on Confluence public
mail Webmail based on Rainloop public
file File browser based on File Browser public
safe Password manager based on Bitwarden compatible server written in Rust public
gps GPS tracking system based on Traccar public
dns DNS-based ad blocker based on Pi-hole public
pvr-series PVR for TV series based on Sonarr public
pvr-movies PVR for movies based on Radarr public
know-alt Wiki based on Bookstack as alternative to the know app public
beat Status page system based on Cachet public
pics Photo management based on Lychee public
dev Software development & agile management tools based on Tuleap public
ams IT asset management system based on Snipe-IT public
tube Media downloader based on AllTube Download public
code IDE based on code-server public

Why Self-host?

There are two reasons why I host the above apps myself:

  • Cost: I would pay substantially more for consuming the software as a service than hosting it myself.
  • Privacy: I do not entrust the provider with my sensible data.

Requirements

Apart from docker-compose and its dependencies (Docker 17.06.0+ and Docker Compose 1.14.0+), this repository requires two conditions to properly work: one regarding SSL certificates, one with regard to Docker networking.

SSL Certificates

For the time being, the prxy app (i.e. Traefik) works with two HTTPS entry points (public and private) and thus currently relies on two files:

  • ${TRAEFIK_PEM}: the SSL certificate for your domain
  • ${TRAEFIK_KEY}: the private key for the SSL certificate

The assumption is that each app runs on its own subdomain and that all apps are covered in the given SSL certificate (the easiest being a wildcard SSL certificate). A version with support for dynamic certificates from Let’s Encrypt is on the to-do list.

Docker Networking

Before starting any app, you first need to create the two networks that the apps use. Enter the following two commands:

$ sudo docker network create wappsfrontend
$ sudo docker network create wappsbackend

Use the flag --subnet in case you want to define the CIDR notated IP ranges (i.e. 10.11.12.0/24) of these two networks.

Customization

Most apps require customization before they can be deployed. These apps contain one or more .default files in the respective app folder. Copy those files and rename the copies to match the original file excluding the .default suffix (i.e. copy .env.default to .env). Then set the empty variables in the files to fit your needs.

For further instructions, please refer to the README.md files in the respective app subfolders.

Usage

To create and run the apps, switch to the corresponding app subfolder (i.e. $ cd prxy) and execute the command $ sudo docker-compose up -d. Please note: The vast majority of apps is only accessible via the prxy app—so make sure to first start the prxy app accordingly.

Apps that are considered publically available (see Availability column in the table above) can be reached over ports 80 and 443; private apps can be reached over port 4443. This gives you the option to limit the traffic to private apps via firewall.

You can’t perform that action at this time.