This repository contains the docker-compose and configuration files for my home cloud setup.
A description can be found on my blog: https://github.com/tbienias/blog/blob/master/posts/home-server.md
- In
.env
changeTRAEFIK_DOMAIN
to your domain (e.g. mydomain.com). - In
.env
changeTRAEFIK_ACME_EMAIL
to your Lets Encrypt E-Mail (e.g. myname@gmail.com). - In
.env
changeTRAEFIK_ACME_PROVIDER
to your DNS provider - list of possible values here. - In
traefik/traefik.env
setup environment vars according to chosen ACME provider. For example whenTRAEFIK_ACME_PROVIDER=digitalocean
thenDO_AUTH_TOKEN=token_value
has to be specified. - Make sure that
/opt/traefik/letsencrypt/acme.json
exists and access rights are set to600
. docker network create traefik_net
cd traefik && docker-compose up -d
- In
.env
changeGITEA_SSH_PORT
to the port on which you want git SSH be available (e.g. 11122). - In
.env
changeGITEA_DATA_DIR
to a directory where Gitea stores files (e.g./mnt/data/gitea
). - In
gitea/app.ini
changeSSH_DOMAIN
to the domain you want to SSH clone from (e.g. gitea.mydomain.com). - In
gitea/app.ini
changeROOT_URL
to the one you set in step 3, but prefix with https:// (e.g. https://gitea.mydomain.com). - In
gitea/app.ini
changeSSH_PORT
to the one you set in step 1 (e.g. 11122). - In
gitea/app.ini
changeDOMAIN
to the one you set in step 3 (e.g. gitea.mydomain.com). - In
gitea/app.ini
changeLFS_JWT_SECRET
to a large unique string. - In
gitea/app.ini
changeSECRET_KEY
to a large unique string. - In
gitea/app.ini
changeINTERNAL_TOKEN
to a large unique string. - In
gitea/app.ini
changeJWT_SECRET
to a large unique string. - Add user for running the Gitea container (e.g. gitea).
- In
gitea/gitea.env
changeUSER_UID
to the user id of user created in step 11. - In
gitea/gitea.env
changeUSER_GID
to the group id of user created in step 11. cd gitea && docker-compose up -d
- In
.env
changeKANBOARD_DATA_DIR
to a directory where Kanboard stores data (e.g./mnt/data/kanboard/data
). - In
.env
changeKANBOARD_PLUGINS_DIR
to a directory where Kanboard stores plugins (e.g./mnt/data/kanboard/plugins
). docker volume create kanboard_ssl
cd kanboard && docker-compose up -d
docker volume create portainer_data
cd portainer && docker-compose up -d
- In
.env
changeNC_DATA_DIR
to a directory where Nextcloud stores files (e.g./mnt/data/nextcloud/data
). - In
nextcloud/nextcloud.env
change MYSQL_PASSWORD to a large unique string. - In
nextcloud/nextcloud.env
change MYSQL_ROOT_PASSWORD to a large unique string. docker volume create nextcloud_apps
docker volume create nextcloud_config
docker volume create nextcloud_html
docker volume create nextcloud_mysql
docker network create nextcloud_net
cd nextcloud && docker-compose up -d
Optional post-processing:
docker exec --user www-data nextcloud php occ config:system:set trusted_domains 0 --value=nextcloud.mydomain.com
docker exec --user www-data nextcloud php occ config:system:set overwriteprotocol --value=https
2FA disable (in case of emergency):
docker exec --user www-data nextcloud php occ config:system:set twofactor_enforced --value=false
- In
teamspeak/teamspeak_db.env
changeMYSQL_ROOT_PASSWORD
to a large unique string. - In
teamspeak/teamspeak.env
changeTS3SERVER_DB_PASSWORD
to the string you set in step 1. docker volume create teamspeak_data
docker volume create teamspeak_mysql
docker network create teamspeak_net
cd teamspeak && docker-compose up -d
MIT