Portainer

Portainer is a comprehensive management UI for Docker and Kubernetes containers. It provides dashboards for viewing container health, logs, volumes and networks. You can start, stop and configure containers without touching the CLI. It supports role-based access and stack deployment for teams. An essential tool for anyone managing a containerized environment. Setup docker run docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest add environment for other lxc containers in same proxmox server ...

October 7, 2024 · Niklas Amundsson

Slash

Slash is a self-hosted bookmarking and knowledge organization platform. It supports full-text search, tagging and archiving of saved pages. Designed for information collectors, it helps you create a personal knowledge base. The UI is clean and keyboard-friendly, making it fast to navigate. Slash is ideal for researchers and lifelong learners who gather lots of online resources. Setup docker-compose.yaml version: '3' networks: docker_net: external: true volumes: slash: services: app: image: yourselfhosted/slash:latest container_name: slash restart: unless-stopped ports: - 5231:5231 volumes: - slash:/var/opt/slash networks: - docker_net Sources GitHub

October 7, 2024 · Niklas Amundsson

Umami

Umami is a privacy-first, self-hosted web analytics solution. It tracks website visits, pages and referrers without collecting personal data or using cookies. The dashboard is clean and customizable, giving you essential insights without the bloat. It’s GDPR-compliant by design and lightweight enough to run on small servers. Great for developers and businesses who care about data privacy. Setup docker-compose.yaml version: '3.7' networks: docker_net: external: true volumes: umami-db-data: services: umami: image: ghcr.io/umami-software/umami:postgresql-latest container_name: umami restart: unless-stopped ports: - 3005:3000 environment: DATABASE_URL: postgresql://umami:$UMAMI_DB_PASSWORD@umami_db:5432/umami DATABASE_TYPE: postgresql APP_SECRET: $UMAMI_APP_SECRET depends_on: umami_db: condition: service_healthy healthcheck: test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"] interval: 5s timeout: 5s retries: 5 networks: - docker_net umami_db: image: postgres:15-alpine container_name: umami_db restart: unless-stopped environment: POSTGRES_DB: umami POSTGRES_USER: umami POSTGRES_PASSWORD: $UMAMI_DB_PASSWORD volumes: - umami-db-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 networks: - docker_net Sources website GitHub

October 7, 2024 · Niklas Amundsson

Uptime Kuma

Uptime Kuma is a self-hosted monitoring tool that checks the availability of websites and services. It provides real-time alerts, uptime graphs and public status pages. You can monitor HTTP(s), TCP, ping and more with customizable intervals. The interface is intuitive and includes notification integration with Discord, Telegram and others. Ideal for keeping tabs on your services and minimizing downtime. Setup docker-compose.yaml version: '3' networks: docker_net: external: true volumes: uptime-kuma: services: app: image: louislam/uptime-kuma:latest container_name: uptime-kuma restart: unless-stopped ports: - 3001:3001 volumes: - uptime-kuma:/app/data networks: - docker_net Sources website GitHub

October 7, 2024 · Niklas Amundsson

Vaultwarden

Vaultwarden is a lightweight, self-hosted implementation of the Bitwarden password manager server. It lets you store and sync encrypted credentials across devices using official Bitwarden clients. Designed to run on minimal resources, it’s perfect for personal or small-team use. You retain full control of your data while maintaining compatibility with Bitwarden’s features. It’s a secure and cost-effective solution for password management. Setup docker-compose.yaml version: '3' networks: docker_net: external: true volumes: data: services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden hostname: vaultwarden restart: unless-stopped ports: - 8082:80 environment: - DOMAIN=$DOMAIN - ADMIN_TOKEN=$ADMIN_TOKEN - LOGIN_RATELIMIT_MAX_BURST=10 - LOGIN_RATELIMIT_SECONDS=60 - ADMIN_RATELIMIT_MAX_BURST=10 - ADMIN_RATELIMIT_SECONDS=60 - SENDS_ALLOWED=true - EMERGENCY_ACCESS_ALLOWED=true - WEB_VAULT_ENABLED=true - INVITATIONS_ALLOWED=true - SIGNUPS_ALLOWED=true - SIGNUPS_VERIFY=true - SIGNUPS_VERIFY_RESEND_TIME=3600 - SIGNUPS_VERIFY_RESEND_LIMIT=5 - SMTP_HOST=smtp.googlemail.com - SMTP_FROM=$SMTP_FROM - SMTP_FROM_NAME=Vaultwarden - SMTP_SECURITY=starttls - SMTP_PORT=587 - SMTP_USERNAME=$SMTP_USERNAME - SMTP_PASSWORD=$SMTP_PASSWORD - SMTP_AUTH_MECHANISM=Login - PUSH_ENABLED=true - PUSH_INSTALLATION_ID=$PUSH_INSTALLATION_ID - PUSH_INSTALLATION_KEY=$PUSH_INSTALLATION_KEY - PUSH_RELAY_URI=https://push.bitwarden.eu - PUSH_IDENTITY_URI=https://identity.bitwarden.eu volumes: - data:/data networks: - docker_net Sources Github

October 7, 2024 · Niklas Amundsson

Watchtower

Watchtower is a Docker container that automatically updates your running containers whenever a new image is available. It checks Docker Hub or your image registry periodically and applies updates safely. This ensures your services stay up to date without manual intervention. It’s configurable to ignore specific containers or trigger scripts after updates. A must-have tool for automating container maintenance. Setup docker-compose.yaml (email) version: "3" networks: docker_net: external: true services: watchtower: image: containrrr/watchtower container_name: watchtower restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/localtime:/etc/localtime:ro environment: WATCHTOWER_MONITOR_ONLY: true WATCHTOWER_SCHEDULE: "0 0 8 ? * SUN" WATCHTOWER_CLEANUP: true WATCHTOWER_NOTIFICATION_EMAIL_FROM: $FROM_EMAIL WATCHTOWER_NOTIFICATION_EMAIL_TO: $TO_EMAIL WATCHTOWER_NOTIFICATION_EMAIL_SERVER: smtp.gmail.com WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: 587 WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER: $FROM_EMAIL WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD: $GMAIL_APP_PASSWORD WATCHTOWER_NOTIFICATION_EMAIL_DELAY: 30 WATCHTOWER_NOTIFICATIONS: email networks: - docker_net docker-compose.yaml (email, auto update) version: "3" networks: docker_net: external: true services: watchtower: image: containrrr/watchtower container_name: watchtower restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/localtime:/etc/localtime:ro environment: WATCHTOWER_SCHEDULE: "0 0 * * *" WATCHTOWER_CLEANUP: true WATCHTOWER_NOTIFICATION_EMAIL_FROM: $FROM_EMAIL WATCHTOWER_NOTIFICATION_EMAIL_TO: $TO_EMAIL WATCHTOWER_NOTIFICATION_EMAIL_SERVER: smtp.gmail.com WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: 587 WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER: $FROM_EMAIL WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD: $GMAIL_APP_PASSWORD WATCHTOWER_NOTIFICATION_EMAIL_DELAY: 30 WATCHTOWER_NOTIFICATIONS: email networks: - docker_net docker-compose.yaml (discord webhook) version: "3" networks: docker_net: external: true services: watchtower: image: containrrr/watchtower container_name: watchtower restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/localtime:/etc/localtime:ro environment: WATCHTOWER_MONITOR_ONLY: true WATCHTOWER_SCHEDULE: "0 0 8 ? * SUN" WATCHTOWER_CLEANUP: true WATCHTOWER_NOTIFICATIONS: slack WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: $DISCORD_WEBHOOK_URL # add '/slack' at the end networks: - docker_net docker-compose.yaml (discord webhook, auto update) version: "3" networks: docker_net: external: true services: watchtower: image: containrrr/watchtower container_name: watchtower restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/localtime:/etc/localtime:ro environment: WATCHTOWER_SCHEDULE: "0 0 8 ? * SUN" WATCHTOWER_CLEANUP: true WATCHTOWER_NOTIFICATIONS: slack WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: $DISCORD_WEBHOOK_URL # add '/slack' at the end networks: - docker_net Sources website GitHub

October 7, 2024 · Niklas Amundsson