Standartized docker-compose files. Added some documentation (AI generated)

This commit is contained in:
2025-08-23 23:18:02 +02:00
parent a0d5ffdd29
commit 2bb9e2541a
20 changed files with 550 additions and 304 deletions

18
Ansible/README.md Normal file
View File

@@ -0,0 +1,18 @@
# Ansible Playbooks
This directory contains Ansible playbooks for automating server configuration and management tasks.
## Playbooks
- **apt_upgrade.yml**: This playbook updates all packages on a Debian/Ubuntu server.
- **zabbix_agent_upgrade.yml**: This playbook upgrades the Zabbix agent on a server.
## Usage
To use these playbooks, you will need to have Ansible installed on your control machine. You will also need to have an inventory file that defines the hosts you want to manage.
Once you have Ansible and an inventory file set up, you can run a playbook using the following command:
```
ansible-playbook -i <inventory_file> <playbook>.yml
```

View File

@@ -1 +1,38 @@
All yaml configs using stack.env variables, as they was designed to be used with Portainer
# Docker Projects
This directory contains Docker Compose setups for various self-hosted applications. Each project is in its own directory and includes a `docker-compose.yaml` file and any other necessary configuration files.
Most of these configurations use `.env` files for environment variables. These were designed to be used with Portainer, but can be used with `docker-compose` as well.
## Projects
- [Bookstack](bookstack/README.md)
- [DDNS Cloudflare](ddns-cloudflare/README.md)
- [Garmin Grafana](garmin-grafana/README.md)
- [Guacamole](guacamole/README.md)
- [Heimdall](heimdall/README.md)
- [Homepage](homepage/README.md)
- [Immich](immich/README.md)
- [IT-Tools](it-tools/README.md)
- [Mealie](mealie/README.md)
- [n8n](n8n/README.md)
- [Nextcloud](nextcloud/README.md)
- [Nginx Proxy Manager](nginx-proxy-manager/README.md)
- [pgAdmin](pgadmin/README.md)
- [Portainer](portainer/README.md)
- [Seafile](seafile/README.md)
- [Transmission (haugene-openvpn)](transmission/haugene-openvpn/README.md)
- [Transmission (lscr.io)](transmission/lscr.io/README.md)
- [Vaultwarden](vaultwarden/README.md)
- [Webtop](webtop/README.md)
## Usage
To use these projects, you will need to have Docker and Docker Compose installed. You will also need to create a `.env` file in each project directory with the required environment variables.
Once you have Docker and Docker Compose set up and the `.env` file created, you can start a project using the following command:
```
cd <project_directory>
docker-compose up -d
```

View File

@@ -0,0 +1,47 @@
# Bookstack
[Bookstack](https://www.bookstackapp.com/) is a simple, self-hosted, easy-to-use platform for organizing and storing information.
## Docker Compose Setup
This directory contains a Docker Compose setup for Bookstack.
### Services
- **bookstack**: The Bookstack application itself.
- **bookstack_database**: A MariaDB database for Bookstack.
### Volumes
- `${PATH_TO_CONFIG}`: Stores the Bookstack configuration files.
- `${PATH_TO_DB}`: Stores the MariaDB database files.
### Ports
- `6875:80`: The Bookstack application is accessible on port 6875.
## Usage
1. Create a `.env` file with the following variables:
```
# Password for bookstack MySQL user
DB_USER_PASS=<your_strong_pass>
# Password for root MySQL user
DB_ROOT_PASS=<your_strongest_pass>
# Directory, where the bookstack itself will store the files
PATH_TO_CONFIG=/path/to/bookstack/config
# Directory, where MySQL data will be stored
PATH_TO_DB=/path/to/db/data
# Your timezone
TZ=Europe/Warsaw
# The IP:port or URL your application will be accessed on (ie. http://192.168.1.1:6875 or https://bookstack.mydomain.com
APP_URL=https://bookstack.example.com
```
2. Run `docker-compose up -d` to start the containers.

View File

@@ -0,0 +1,31 @@
# Cloudflare DDNS
This directory contains a Docker Compose setup for a Cloudflare DDNS client.
This service will automatically update your Cloudflare DNS records with your public IP address.
## Docker Compose Setup
### Services
- **cloudflare-ddns**: The Cloudflare DDNS client.
### Environment Variables
- `CLOUDFLARE_API_TOKEN`: Your Cloudflare API token.
- `DOMAINS`: A comma-separated list of domains to update.
- `PROXIED`: Whether or not to proxy the domains through Cloudflare.
## Usage
1. Create a `.env` file with the following variables:
```
# Cloudflare API key. User -> My Profile -> API tokens
CLOUDFLARE_API_TOKEN=your_api_key
# Cloudflare zone, which will be used. Dashboard -> Web Sites
DOMAINS=your_domains
```
2. Run `docker-compose up -d` to start the container.

View File

@@ -1,37 +1,37 @@
services:
cloudflare-ddns:
image: favonia/cloudflare-ddns:latest
container_name: cloudflare-ddns
env_file: .env
# Choose the appropriate tag based on your need:
# - "latest" for the latest stable version (which could become 2.x.y
# in the future and break things)
# - "1" for the latest stable version whose major version is 1
# - "1.x.y" to pin the specific version 1.x.y
network_mode: host
# This bypasses network isolation and makes IPv6 easier (optional; see below)
restart: always
# Restart the updater after reboot
user: "1000:1000"
# Run the updater with specific user and group IDs (in that order).
# You can change the two numbers based on your need.
read_only: true
# Make the container filesystem read-only (optional but recommended)
cap_drop: [all]
# Drop all Linux capabilities (optional but recommended)
security_opt: [no-new-privileges:true]
# Another protection to restrict superuser privileges (optional but recommended)
environment:
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
# Your Cloudflare API token
- DOMAINS=${DOMAINS}
# Your domains (separated by commas)
- PROXIED=true
# Tell Cloudflare to cache webpages and hide your IP (optional)
#networks:
# LAN0:
# external: true
# name: LAN0
# Introduce custom Docker networks to the 'services' in this file. A common use case
# for this is binding one of the 'services' to a specific network interface available at
services:
cloudflare-ddns:
image: favonia/cloudflare-ddns:latest
container_name: cloudflare-ddns
env_file: .env
# Choose the appropriate tag based on your need:
# - "latest" for the latest stable version (which could become 2.x.y
# in the future and break things)
# - "1" for the latest stable version whose major version is 1
# - "1.x.y" to pin the specific version 1.x.y
network_mode: host
# This bypasses network isolation and makes IPv6 easier (optional; see below)
restart: always
# Restart the updater after reboot
user: "1000:1000"
# Run the updater with specific user and group IDs (in that order).
# You can change the two numbers based on your need.
read_only: true
# Make the container filesystem read-only (optional but recommended)
cap_drop: [all]
# Drop all Linux capabilities (optional but recommended)
security_opt: [no-new-privileges:true]
# Another protection to restrict superuser privileges (optional but recommended)
environment:
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
# Your Cloudflare API token
- DOMAINS=${DOMAINS}
# Your domains (separated by commas)
- PROXIED=true
# Tell Cloudflare to cache webpages and hide your IP (optional)
#networks:
# LAN0:
# external: true
# name: LAN0
# Introduce custom Docker networks to the 'services' in this file. A common use case
# for this is binding one of the 'services' to a specific network interface available at
# Docker's host. This section is required for the 'networks' section of each 'services'.

View File

@@ -0,0 +1,41 @@
# Garmin Grafana
This directory contains a Docker Compose setup for a Garmin Grafana dashboard.
This setup will fetch your Garmin Connect data and store it in an InfluxDB database. You can then use Grafana to visualize the data.
## Docker Compose Setup
### Services
- **garmin-fetch-data**: Fetches your Garmin Connect data and stores it in InfluxDB.
- **influxdb**: An InfluxDB database for storing your Garmin Connect data.
- **grafana**: A Grafana instance for visualizing your Garmin Connect data.
### Volumes
- `${GARMINCONNECT_TOKENS}`: Stores the Garmin Connect tokens.
- `influxdb_data`: Stores the InfluxDB database files.
- `grafana_data`: Stores the Grafana configuration files.
### Ports
- `8086:8086`: The InfluxDB API is accessible on port 8086.
- `3000:3000`: The Grafana web interface is accessible on port 3000.
## Usage
1. Create a `.env` file with the following variables:
```
# Your Garmin Connect email address
GARMINCONNECT_EMAIL=<your_email>
# Your Garmin Connect password, base64 encoded
GARMINCONNECT_PASSWORD=<your_base64_encoded_password>
# Path to a directory where the Garmin Connect tokens will be stored
GARMINCONNECT_TOKENS=/path/to/garminconnect/tokens
```
2. Run `docker-compose up -d` to start the containers.

View File

@@ -1,52 +1,52 @@
services:
garmin-fetch-data:
restart: unless-stopped
image: thisisarpanghosh/garmin-fetch-data:latest
container_name: garmin-fetch-data
depends_on:
- influxdb
volumes:
- ${GARMINCONNECT_TOKENS}:/home/appuser/.garminconnect # (persistant tokens storage - garminconnect-tokens folder must be owned by 1000:1000)
environment:
- INFLUXDB_HOST=influxdb
- INFLUXDB_PORT=8086
- INFLUXDB_USERNAME=influxdb_user
- INFLUXDB_PASSWORD=influxdb_secret_password
- INFLUXDB_DATABASE=GarminStats
- UPDATE_INTERVAL_SECONDS=300
- LOG_LEVEL=INFO
- GARMINCONNECT_EMAIL=${GARMINCONNECT_EMAIL}
- GARMINCONNECT_BASE64_PASSWORD=${GARMINCONNECT_PASSWORD} # (must be base64 encoded)
influxdb:
restart: unless-stopped
container_name: influxdb
hostname: influxdb
environment:
- INFLUXDB_DB=GarminStats
- INFLUXDB_USER=influxdb_user
- INFLUXDB_USER_PASSWORD=influxdb_secret_password
- INFLUXDB_DATA_INDEX_VERSION=tsi1
ports:
- '8086:8086'
volumes:
- influxdb_data:/var/lib/influxdb
image: 'influxdb:1.11'
grafana:
restart: unless-stopped
container_name: grafana
hostname: grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana_data:/var/lib/grafana
ports:
- '3000:3000'
image: 'grafana/grafana:latest'
volumes:
influxdb_data:
services:
garmin-fetch-data:
restart: unless-stopped
image: thisisarpanghosh/garmin-fetch-data:latest
container_name: garmin-fetch-data
depends_on:
- influxdb
volumes:
- ${GARMINCONNECT_TOKENS}:/home/appuser/.garminconnect # (persistant tokens storage - garminconnect-tokens folder must be owned by 1000:1000)
environment:
- INFLUXDB_HOST=influxdb
- INFLUXDB_PORT=8086
- INFLUXDB_USERNAME=influxdb_user
- INFLUXDB_PASSWORD=influxdb_secret_password
- INFLUXDB_DATABASE=GarminStats
- UPDATE_INTERVAL_SECONDS=300
- LOG_LEVEL=INFO
- GARMINCONNECT_EMAIL=${GARMINCONNECT_EMAIL}
- GARMINCONNECT_BASE64_PASSWORD=${GARMINCONNECT_PASSWORD} # (must be base64 encoded)
influxdb:
restart: unless-stopped
container_name: influxdb
hostname: influxdb
environment:
- INFLUXDB_DB=GarminStats
- INFLUXDB_USER=influxdb_user
- INFLUXDB_USER_PASSWORD=influxdb_secret_password
- INFLUXDB_DATA_INDEX_VERSION=tsi1
ports:
- '8086:8086'
volumes:
- influxdb_data:/var/lib/influxdb
image: 'influxdb:1.11'
grafana:
restart: unless-stopped
container_name: grafana
hostname: grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana_data:/var/lib/grafana
ports:
- '3000:3000'
image: 'grafana/grafana:latest'
volumes:
influxdb_data:
grafana_data:

View File

@@ -0,0 +1,30 @@
# Guacamole
[Guacamole](https://guacamole.apache.org/) is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.
This directory contains a Docker Compose setup for Guacamole.
## Docker Compose Setup
### Services
- **guacamole**: The Guacamole application.
### Volumes
- `${PATH_TO_CONFIG}`: Stores the Guacamole configuration files.
### Ports
- `8080:8080`: The Guacamole web interface is accessible on port 8080.
## Usage
1. Create a `.env` file with the following variables:
```
# Path to a directory where the Guacamole configuration files will be stored
PATH_TO_CONFIG=/path/to/guacamole/config
```
2. Run `docker-compose up -d` to start the container.

24
Docker/heimdall/README.md Normal file
View File

@@ -0,0 +1,24 @@
# Heimdall
[Heimdall](https://heimdall.site/) is a dashboard for all your web applications.
This directory contains a Docker Compose setup for Heimdall.
## Docker Compose Setup
### Services
- **heimdall**: The Heimdall application.
### Volumes
- `/home/mbuz/docker/heimdall/config:/config`: Stores the Heimdall configuration files. You should change this to a path on your own system.
### Ports
- `80:80`: The Heimdall web interface is accessible on port 80.
- `443:443`: The Heimdall web interface is accessible on port 443.
## Usage
1. Run `docker-compose up -d` to start the container.

View File

@@ -1,16 +1,16 @@
version: "2.1"
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
volumes:
- /home/mbuz/docker/heimdall/config:/config
ports:
- 80:80
- 443:443
version: "2.1"
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
volumes:
- /home/mbuz/docker/heimdall/config:/config
ports:
- 80:80
- 443:443
restart: unless-stopped

View File

@@ -1,7 +1,7 @@
services:
it-tools:
image: 'corentinth/it-tools:latest'
ports:
- '8182:80' # change if needed
restart: unless-stopped
services:
it-tools:
image: 'corentinth/it-tools:latest'
ports:
- '8182:80' # change if needed
restart: unless-stopped
container_name: it-tools

View File

@@ -1,33 +1,33 @@
services:
mealie-frontend:
image: hkotel/mealie:latest
container_name: mealie-frontend
env_file:
- .env
environment:
# Set Frontend ENV Variables Here
- API_URL=http://mealie-api:9000
restart: unless-stopped
ports:
- "9925:3000"
volumes:
- ${DATA_FOLDER}/mealie:/app/data/
mealie-api:
image: hkotel/mealie:api-v1.0.0beta-5
container_name: mealie-api
deploy:
resources:
limits:
memory: 1024M
volumes:
- ${DATA_FOLDER}/mealie:/app/data/
environment:
# Set Backend ENV Variables Here
- ALLOW_SIGNUP=true
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
- MAX_WORKERS=1
- WEB_CONCURRENCY=1
- BASE_URL=${BASE_URL}
services:
mealie-frontend:
image: hkotel/mealie:latest
container_name: mealie-frontend
env_file:
- .env
environment:
# Set Frontend ENV Variables Here
- API_URL=http://mealie-api:9000
restart: unless-stopped
ports:
- "9925:3000"
volumes:
- ${DATA_FOLDER}/mealie:/app/data/
mealie-api:
image: hkotel/mealie:api-v1.0.0beta-5
container_name: mealie-api
deploy:
resources:
limits:
memory: 1024M
volumes:
- ${DATA_FOLDER}/mealie:/app/data/
environment:
# Set Backend ENV Variables Here
- ALLOW_SIGNUP=true
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
- MAX_WORKERS=1
- WEB_CONCURRENCY=1
- BASE_URL=${BASE_URL}
restart: unless-stopped

View File

@@ -1,22 +1,22 @@
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:latest #
container_name: mealie
env_file:
- .env
restart: unless-stopped
ports:
- "9925:9000" #
deploy:
resources:
limits:
memory: 1000M #
volumes:
- ${DATA_FOLDER}:/app/data/
environment:
# Set Backend ENV Variables Here
ALLOW_SIGNUP: "false"
PUID: 1000
PGID: 1000
TZ: Europe/Warsaw
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:latest #
container_name: mealie
env_file:
- .env
restart: unless-stopped
ports:
- "9925:9000" #
deploy:
resources:
limits:
memory: 1000M #
volumes:
- ${DATA_FOLDER}:/app/data/
environment:
# Set Backend ENV Variables Here
ALLOW_SIGNUP: "false"
PUID: 1000
PGID: 1000
TZ: Europe/Warsaw
BASE_URL: ${YOUR_DOMAIN:-https://mealie.yourdomain.com}

View File

@@ -1,21 +1,21 @@
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- 5678:5678
environment:
- N8N_HOST=${DOMAIN}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${DOMAIN}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
volumes:
- n8n_data:/home/node/.n8n
- ${PATH_TO_FILES}:/files
volumes:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- 5678:5678
environment:
- N8N_HOST=${DOMAIN}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${DOMAIN}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
volumes:
- n8n_data:/home/node/.n8n
- ${PATH_TO_FILES}:/files
volumes:
n8n_data:

View File

@@ -1,48 +1,48 @@
version: '3.3'
services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
container_name: nextcloud
env_file:
- stack.env
environment:
- PUID=1000
- PGID=1000
- PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT}
- PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT}
- TZ=${TZ}
volumes:
- ${CONFIG}:/config
- ${DATA}:/data
ports:
- 5443:443
restart: unless-stopped
links:
- nextcloud-mariadb
depends_on:
- nextcloud-mariadb
nextcloud-mariadb:
image: lscr.io/linuxserver/mariadb:latest
container_name: nextloud-mariadb
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- ${MARIADB}:/config
ports:
- 5306:3306
restart: unless-stopped
networks:
default:
name: nextcloud
version: '3.3'
services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
container_name: nextcloud
env_file:
- stack.env
environment:
- PUID=1000
- PGID=1000
- PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT}
- PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT}
- TZ=${TZ}
volumes:
- ${CONFIG}:/config
- ${DATA}:/data
ports:
- 5443:443
restart: unless-stopped
links:
- nextcloud-mariadb
depends_on:
- nextcloud-mariadb
nextcloud-mariadb:
image: lscr.io/linuxserver/mariadb:latest
container_name: nextloud-mariadb
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- ${MARIADB}:/config
ports:
- 5306:3306
restart: unless-stopped
networks:
default:
name: nextcloud
driver: bridge

View File

@@ -1,37 +1,37 @@
services:
transmission-openvpn:
image: haugene/transmission-openvpn
container_name: transmission-openvpn
restart: unless-stopped
deploy:
resources:
limits:
memory: 2G # adjust to your needs
cap_add:
- NET_ADMIN
volumes:
- ${PATH_TO_CONFIG}:/config
- ${PATH_TO_DOWNLOADS}:/data # optional
- ${PATH_TO_WATCH_FOLDER}:/data/watch # optional
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
- OPENVPN_PROVIDER=${OPENVPN_PROVIDER}
- NORDVPN_COUNTRY=${NORDVPN_COUNTRY}
# - OPENVPN_CONFIG=${OPENVPN_CONFIG}
# Do not use NordVPN username!
# To obtain the credentials proceed with the manual configuration in NordVPN account.
- OPENVPN_USERNAME=${OPENVPN_USERNAME}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
- LOCAL_NETWORK=${LOCAL_NETWORK} # see .env file for comments
- TRANSMISSION_WEB_UI=${TRANSMISSION_WEB_UI} # optional
logging:
driver: json-file
options:
max-size: 10m
ports:
- '9091:9091'
# Not all the countries and servers are supporting p2p, so you need to choose the right server. Here's the hint:
services:
transmission-openvpn:
image: haugene/transmission-openvpn
container_name: transmission-openvpn
restart: unless-stopped
deploy:
resources:
limits:
memory: 2G # adjust to your needs
cap_add:
- NET_ADMIN
volumes:
- ${PATH_TO_CONFIG}:/config
- ${PATH_TO_DOWNLOADS}:/data # optional
- ${PATH_TO_WATCH_FOLDER}:/data/watch # optional
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
- OPENVPN_PROVIDER=${OPENVPN_PROVIDER}
- NORDVPN_COUNTRY=${NORDVPN_COUNTRY}
# - OPENVPN_CONFIG=${OPENVPN_CONFIG}
# Do not use NordVPN username!
# To obtain the credentials proceed with the manual configuration in NordVPN account.
- OPENVPN_USERNAME=${OPENVPN_USERNAME}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
- LOCAL_NETWORK=${LOCAL_NETWORK} # see .env file for comments
- TRANSMISSION_WEB_UI=${TRANSMISSION_WEB_UI} # optional
logging:
driver: json-file
options:
max-size: 10m
ports:
- '9091:9091'
# Not all the countries and servers are supporting p2p, so you need to choose the right server. Here's the hint:
# https://support.nordvpn.com/hc/en-us/articles/20465085067665-NordVPN-proxy-setup-for-BitTorrent

View File

@@ -1,24 +1,24 @@
---
services:
transmission:
image: lscr.io/linuxserver/transmission:latest
container_name: transmission
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
- TRANSMISSION_WEB_HOME= #optional
- USER=${USERNAME} #optional
- PASS=${PASSWORD} #optional
- WHITELIST= #optional
- PEERPORT= #optional
- HOST_WHITELIST= #optional
volumes:
- ${PATH_TO_CONFIG}:/config
- ${PATH_TO_DOWNLOADS}:/downloads #optional
- ${PATH_TO_WATCH_FOLDER}:/watch #optional
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped
---
services:
transmission:
image: lscr.io/linuxserver/transmission:latest
container_name: transmission
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Warsaw
- TRANSMISSION_WEB_HOME= #optional
- USER=${USERNAME} #optional
- PASS=${PASSWORD} #optional
- WHITELIST= #optional
- PEERPORT= #optional
- HOST_WHITELIST= #optional
volumes:
- ${PATH_TO_CONFIG}:/config
- ${PATH_TO_DOWNLOADS}:/downloads #optional
- ${PATH_TO_WATCH_FOLDER}:/watch #optional
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped

View File

@@ -1,11 +1,11 @@
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "${DOMAIN}"
volumes:
- ${PATH_TO_DATA}:/data
ports:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "${DOMAIN}"
volumes:
- ${PATH_TO_DATA}:/data
ports:
- 8033:80

View File

@@ -1,9 +1,27 @@
# Max's Homelab
Welcome to my personal Homelab repository! This repository contains various projects that I use, have used, or plan to use in my Homelab.
At the moment I have a Lenovo P520 running as a server and I am experimenting a lot. Use with caution, I am not responsible for your data. But feel free to explore and use the resources provided to enhance your home lab setup.
Welcome to my personal Homelab repository! This repository contains various projects that I use, have used, or plan to use in my Homelab. At the moment I have a Lenovo P520 running as a server and I am experimenting a lot. Use with caution, I am not responsible for your data. But feel free to explore and use the resources provided to enhance your home lab setup.
- **Docker Projects**: Pre-configured Docker containers for different applications and services. Sample configuration files for this services.
- **Scripting & Automation**: Useful scripts for automation and management tasks, Ansible playbooks.
## Overview
Contributions and suggestions are always welcome!
This repository is organized into the following directories:
- **Ansible**: Contains Ansible playbooks for automating server configuration and management tasks.
- **Docker**: Contains Docker Compose setups for various self-hosted applications.
- **Scripts**: Contains various scripts for system administration and automation.
## Docker Projects
This repository contains a collection of pre-configured Docker containers for different applications and services. Each Docker project is contained in its own directory and includes a `docker-compose.yaml` file and any other necessary configuration files.
For more information about the Docker projects, please see the [Docker README](Docker/README.md).
## Scripting & Automation
This repository also contains a collection of useful scripts for automation and management tasks, as well as Ansible playbooks.
For more information about the scripts and playbooks, please see the [Ansible README](Ansible/README.md) and the [Scripts README](Scripts/README.md).
## Contributions
Contributions and suggestions are always welcome! If you have any ideas for new projects or improvements to existing ones, please feel free to open an issue or submit a pull request.