VPS Setup

Aus Un-Hack-Bar
Version vom 1. August 2024, 17:40 Uhr von Vemas (Diskussion | Beiträge) (unhb-Links ohne Minus entfernt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Docker Setup

Allgemeines

Unter Docker Befehle gibt es eine Liste von nützlichen docker Befehlen (z.B. für debugging)

Config-Files:

Es ist zu jedem Docker-Container ein Setup im Ordner /srv/docker-config/<container> abgelegt. Die Container werden auf zwei verschiedene Arten definiert:

  1. (bevorzugt)docker-compose.yml
    1. Starten des Containers: docker-compose -d up (-d für detatched, damit die Container auch weiterlaufen, wenn die Shell geschlossen wird)
    2. Stoppen des Containers: docker-compose down
    3. Inspizieren des Containers: docker-compose ps
  2. (legacy) Drei Files: ./create.sh, ./replace.sh und env_file. Diese Files definieren die Container und können zum neustarten / ersetzen / verändern verwendet werden

Volumes:

Gemountete Volumes sollen unter /srv/docker-volumes/<container>/<volume-wie-im-container> abgelegt werden.

Contabo Server 1

Container-Name Image Sub-Container Web-Adresse
Networks Externe Ports Besonderheiten Erläuterung
nginx jwilder/nginx-proxy:alpine (-) (-) nginx_net 80, 443


Reverse Proxy. Schleift Anfragen zum richtigen Container durch.
nginx-proxy-letsencrypt jrcs/letsencrypt-nginx-proxy-companion:stable (-) (-) nginx_net (-)


Holt letsencrypt Zertifikate für alle Container ab.
watchtower containrrr/watchtower (-) (-) (-) (-)


Überwacht laufende Container. Wenn es eine neue Version gibt, wird der Container gestoppt, die neue Version gepullt, der Container gelöscht und neu gestartet.
gitea gitea/gitea:latest (-) git.un-hack-bar.de, git.unhb.de nginx_net 22


Git Server
wiki christopher/wiki wiki_sql (mariadb) wiki.un-hack-bar.de, wiki.unhb.de
nginx_net wiki_net (-) Eigens angepasstes Dockerfile, basierend auf Mediawiki. Wer das Ding anfasst wird automatisch für immer Admin davon.
Mediawiki Server
spaceapi sebp/lighttpd:latest (-) status.un-hack-bar.de

status.unhb.de


keinanschluss.un-hack-bar.de

keinanschluss.unhb.de


nginx_net (-) Hier wird ein gesonderter Benutzer "keinanschluss" verwendet. Ein Raspi im Space verbindet sich mit SSH. Deswegen ist das /home von "keinanschluss" auf das Volume glelegt und das Volume beherbergt einen SSH-Key für den Raspi. Macht irgendwas für die Spaceapi. (Bitte gern ergänzen, wenn wer weiß was genau)
portainer portainer/portainer:latest (-) portainer.un-hack-bar.de, portainer.unhb.de (-) (-)


Portainer zum verwalten der Docker-Container, aktuell nur für Server1 verfügbar
jverein_sql mariadb:10.3.5 (-) (-)




Mariadb-Datenbank für jVerein. Das Programm selbst ist lokal auf den Clients installiert, nur die DB wird geteilt. Zugriff per SSH.
nextcloud nextcloud:stable nextcloud_sql cloud.unhb.de, cloud.un-hack-bar.de
nginx_net, nextcloud_net (-)


Nextcloud Instanz für die Dateisyncronisation im Space.
codimd hackmdio/hackmd codi_sql (postgres) hackmd.un-hack-bar, hackmd.unhb.de nginx_net

codimd_net

(-)


Ein "Etherpad" mit Markup-Syntax und weitere möglichkeiten
etherpad-lite etherpad/etherpad etherpad_sql (mariadb:latest) pad.un-hack-bar, pad.unhb.de nginx_net

etherpad_net

(-)


Einfaches Etherpad. Admin Zugang steht im Keepass


Wordpress wordpress:latest wordpress_sql (mariadb:10.5) un-hack-bar, unhb.de, www.un-hack-bar.de, www.unhb.de, blog2.un-hack-bar.de nginx_net

wordpress_net

(-)


Unser Blog.... Admin Zugang im Kesspass. DB User+Kennwort in den Docker-Compose file.
Matrix matrixdotorg/synapse:latest

matrix_sql (postgres:10-alpine)

matrix_telegram (dock.mau.dev/tulir/mautrix-telegram:latest)

matrix_pingbot (dock.mau.dev/maubot/maubot:latest)

matrix.un-hack-bar.de, matrix.unhb.de, nginx_net

matrix_net

443, 8448 Port 443 läuft über den reverse proxy, 8448 (für Matrix Federation) direkt aus dem Container, LE Zertifikate via mount-bind aus dem Proxy Der Matrix Server und 2 weitere Dienste (Telegram-Bridge und Pingpot). Details dazu auf der jeweiligen Wikiseite.
Poste.io analogic/poste.io (-) mail.un-hack-bar, mail.unhb.de, nginx_net 25, 110, 143, 465, 587, 993, 995, 4190, 80 Webmail unter mail.un-hack-bar.de erreichbar.


neuromancer (aka Contabo Server 2)

  • IP: 213.136.84.38
  • IPv6: 2a02:c207:3004:7659::1
  • VNC: 5.189.158.206:63083
  • Host system: 3306
  • OS: Ubuntu 19.10 (64 Bit)


minecraft itzg/minecraft-server



  • 8123 (dynmap)
  • 9225 (Prometheus)
  • 25565 (Minecraft)
docker-compose.yml erweiterungen:
  • section environment:
    • MAX_MEMORY: 4G
    • VIRTUAL_HOST: mc.unhb.de
    • VIRTUAL_PORT: 8123
    • LETSENCRYPT_HOST: mc.unhb.de
Admin: ryze
watchtower containrrr/watchtower (-) (-) (-) (-) email notifications werden derzeit an smash gesendet Überwacht laufende Container. Wenn es eine neue Version gibt, wird der Container gestoppt, die neue Version gepullt, der Container gelöscht und neu gestartet.
nginx jwilder/nginx-proxy:alpine (-) (-)
  • nginx_net
  • minecraft_default
  • mailcowdockerized_mailcow-network
80, 443


Reverse Proxy. Schleift Anfragen zum richtigen Container durch.
nginx-proxy-letsencrypt jrcs/letsencrypt-nginx-proxy-companion:stable (-) (-) (-) (-) docker-compose.yml erweiterungen:
  • section environment:
    • DEFAULT_EMAIL=accounts@unhb.de
    • NGINX_PROXY_CONTAINER=nginx_proxy
Holt letsencrypt Zertifikate für alle Container ab.
mailcowdockerized_*
  • mailcowdockerized_ipv6nat-mailcow_1
  • mailcowdockerized_acme-mailcow_1
  • mailcowdockerized_rspamd-mailcow_1
  • mailcowdockerized_netfilter-mailcow_1
  • mailcowdockerized_nginx-mailcow_1
  • mailcowdockerized_php-fpm-mailcow_1
  • mailcowdockerized_dovecot-mailcow_1
  • mailcowdockerized_postfix-mailcow_1
  • mailcowdockerized_dockerapi-mailcow_1
  • mailcowdockerized_memcached-mailcow_1
  • mailcowdockerized_olefy-mailcow_1
  • mailcowdockerized_clamd-mailcow_1
  • mailcowdockerized_mysql-mailcow_1
  • mailcowdockerized_sogo-mailcow_1
  • mailcowdockerized_redis-mailcow_1
  • mailcowdockerized_watchdog-mailcow_1
  • mailcowdockerized_solr-mailcow_1
  • mailcowdockerized_mailman-web_1
  • mailcowdockerized_mailman-core_1
  • mailcowdockerized_database_1
  • mailcowdockerized_unbound-mailcow_1
mailcowdockerized_mailcow-network
  • 25 (SMTP)
  • 110 (POP3)
  • 143 (IMAP)
  • 465 (SMTPS)
  • 587 (SMTP submission)
  • 993 (IMAPS)
  • 995 (POP3S)
  • 4190 (SIEVE)
Aenderungen an der docker-compose.yml fuer unsere zwecke:
  • mailman-core:
    • section environment:
    • MM_HOSTNAME=${IPV4_NETWORK:-172.19.199}.2
  • mailman-web: section environment:
    • VIRTUAL_HOST=lists.unhb.de
    • VIRTUAL_PORT=8080
    • VIRTUAL_PROTO=uwsgi
    • HTTPS_METHOD=redirect
    • LETSENCRYPT_HOST=lists.unhb.de
  • nginx_mailcow:
    • section environment
    • VIRTUAL_HOST=neuromail.unhb.de
    • LETSENCRYPT_HOST=neuromail.unhb.de
    • VIRTUAL_PORT=8080

Mailcow Suite fuer eMail + Mailman fuer mailinglisten Mailman Subscribe liste aufräumen

neuromancer install

as root:

enable_ipv6
reboot
adduser smash
usermod -aG sudo,admin smash
echo neuromancer.unhb.de > /etc/hostname


as smash:


    1. install docker.ce
sudo apt-get update
sudo apt-get install \
   apt-transport-https \
   ca-certificates \
   curl \
   gnupg-agent \
   software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable test" ## appended test as a workaround - currently no containerd.io version available in stable for ubuntu eoan!
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

## install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

## create mc docker container
sudo mkdir -p /srv/docker-volumes/

## install additional tools
sudo apt install htop dstat net-tools

    1. initial docker-compose.yml for minecraft
version: '3.7' 

services:
 mc:
   image: itzg/minecraft-server
   container_name: minecraft
   restart: always
   environment:
     EULA: "true"
     TYPE: SPIGOT
     MAX_MEMORY: 4G
   command: --noconsole
   ports:
     - 25565:25565
     - 8123:8123
     - 9225:9225
   volumes:
     - /srv/docker-volumes/minecraft:/data

    1. altered /etc/sudoers for ssh pubkey access (NOPASS Option)
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" 

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL)NOPASSWD: ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d