add ansible, docker configs
parent
49ef7dbbae
commit
972244dac6
|
@ -0,0 +1,13 @@
|
|||
Assumes:
|
||||
|
||||
- OS (Debian) has been installed and IPs have been configured in hosts.cfg
|
||||
|
||||
- Host is already trusted via ssh and can be ssh'd into using keys
|
||||
|
||||
- Passwordless sudo is enabled for the user ansible uses
|
||||
|
||||
- Secure boot is disabled (wireguard is an unsigned module)
|
||||
|
||||
- Wireguard is configured on 10.200.0.0/24; See https://wiki.debian.org/Wireguard
|
||||
|
||||
- ZFS is configured with a volume at /bigdata for sharing
|
|
@ -0,0 +1,2 @@
|
|||
APT::Periodic::Update-Package-Lists "1";
|
||||
APT::Periodic::Unattended-Upgrade "1";
|
|
@ -0,0 +1,146 @@
|
|||
// Unattended-Upgrade::Origins-Pattern controls which packages are
|
||||
// upgraded.
|
||||
//
|
||||
// Lines below have the format format is "keyword=value,...". A
|
||||
// package will be upgraded only if the values in its metadata match
|
||||
// all the supplied keywords in a line. (In other words, omitted
|
||||
// keywords are wild cards.) The keywords originate from the Release
|
||||
// file, but several aliases are accepted. The accepted keywords are:
|
||||
// a,archive,suite (eg, "stable")
|
||||
// c,component (eg, "main", "contrib", "non-free")
|
||||
// l,label (eg, "Debian", "Debian-Security")
|
||||
// o,origin (eg, "Debian", "Unofficial Multimedia Packages")
|
||||
// n,codename (eg, "jessie", "jessie-updates")
|
||||
// site (eg, "http.debian.net")
|
||||
// The available values on the system are printed by the command
|
||||
// "apt-cache policy", and can be debugged by running
|
||||
// "unattended-upgrades -d" and looking at the log file.
|
||||
//
|
||||
// Within lines unattended-upgrades allows 2 macros whose values are
|
||||
// derived from /etc/debian_version:
|
||||
// ${distro_id} Installed origin.
|
||||
// ${distro_codename} Installed codename (eg, "buster")
|
||||
Unattended-Upgrade::Origins-Pattern {
|
||||
// Codename based matching:
|
||||
// This will follow the migration of a release through different
|
||||
// archives (e.g. from testing to stable and later oldstable).
|
||||
// Software will be the latest available for the named release,
|
||||
// but the Debian release itself will not be automatically upgraded.
|
||||
// "origin=Debian,codename=${distro_codename}-updates";
|
||||
// "origin=Debian,codename=${distro_codename}-proposed-updates";
|
||||
// "origin=Debian,codename=${distro_codename},label=Debian";
|
||||
"origin=Debian,codename=${distro_codename},label=Debian-Security";
|
||||
|
||||
// Archive or Suite based matching:
|
||||
// Note that this will silently match a different release after
|
||||
// migration to the specified archive (e.g. testing becomes the
|
||||
// new stable).
|
||||
// "o=Debian,a=stable";
|
||||
// "o=Debian,a=stable-updates";
|
||||
// "o=Debian,a=proposed-updates";
|
||||
// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
|
||||
};
|
||||
|
||||
// Python regular expressions, matching packages to exclude from upgrading
|
||||
Unattended-Upgrade::Package-Blacklist {
|
||||
// The following matches all packages starting with linux-
|
||||
// "linux-";
|
||||
|
||||
// Use $ to explicitely define the end of a package name. Without
|
||||
// the $, "libc6" would match all of them.
|
||||
// "libc6$";
|
||||
// "libc6-dev$";
|
||||
// "libc6-i686$";
|
||||
|
||||
// Special characters need escaping
|
||||
// "libstdc\+\+6$";
|
||||
|
||||
// The following matches packages like xen-system-amd64, xen-utils-4.1,
|
||||
// xenstore-utils and libxenstore3.0
|
||||
// "(lib)?xen(store)?";
|
||||
|
||||
// For more information about Python regular expressions, see
|
||||
// https://docs.python.org/3/howto/regex.html
|
||||
};
|
||||
|
||||
// This option allows you to control if on a unclean dpkg exit
|
||||
// unattended-upgrades will automatically run
|
||||
// dpkg --force-confold --configure -a
|
||||
// The default is true, to ensure updates keep getting installed
|
||||
//Unattended-Upgrade::AutoFixInterruptedDpkg "true";
|
||||
|
||||
// Split the upgrade into the smallest possible chunks so that
|
||||
// they can be interrupted with SIGTERM. This makes the upgrade
|
||||
// a bit slower but it has the benefit that shutdown while a upgrade
|
||||
// is running is possible (with a small delay)
|
||||
//Unattended-Upgrade::MinimalSteps "true";
|
||||
|
||||
// Install all updates when the machine is shutting down
|
||||
// instead of doing it in the background while the machine is running.
|
||||
// This will (obviously) make shutdown slower.
|
||||
// Unattended-upgrades increases logind's InhibitDelayMaxSec to 30s.
|
||||
// This allows more time for unattended-upgrades to shut down gracefully
|
||||
// or even install a few packages in InstallOnShutdown mode, but is still a
|
||||
// big step back from the 30 minutes allowed for InstallOnShutdown previously.
|
||||
// Users enabling InstallOnShutdown mode are advised to increase
|
||||
// InhibitDelayMaxSec even further, possibly to 30 minutes.
|
||||
//Unattended-Upgrade::InstallOnShutdown "false";
|
||||
|
||||
// Send email to this address for problems or packages upgrades
|
||||
// If empty or unset then no email is sent, make sure that you
|
||||
// have a working mail setup on your system. A package that provides
|
||||
// 'mailx' must be installed. E.g. "user@example.com"
|
||||
//Unattended-Upgrade::Mail "";
|
||||
|
||||
// Set this value to "true" to get emails only on errors. Default
|
||||
// is to always send a mail if Unattended-Upgrade::Mail is set
|
||||
//Unattended-Upgrade::MailOnlyOnError "false";
|
||||
|
||||
// Remove unused automatically installed kernel-related packages
|
||||
// (kernel images, kernel headers and kernel version locked tools).
|
||||
//Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
|
||||
|
||||
// Do automatic removal of newly unused dependencies after the upgrade
|
||||
//Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
|
||||
|
||||
// Do automatic removal of unused packages after the upgrade
|
||||
// (equivalent to apt-get autoremove)
|
||||
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
|
||||
|
||||
// Automatically reboot *WITHOUT CONFIRMATION* if
|
||||
// the file /var/run/reboot-required is found after the upgrade
|
||||
//Unattended-Upgrade::Automatic-Reboot "false";
|
||||
|
||||
// Automatically reboot even if there are users currently logged in
|
||||
// when Unattended-Upgrade::Automatic-Reboot is set to true
|
||||
//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
|
||||
|
||||
// If automatic reboot is enabled and needed, reboot at the specific
|
||||
// time instead of immediately
|
||||
// Default: "now"
|
||||
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
|
||||
|
||||
// Use apt bandwidth limit feature, this example limits the download
|
||||
// speed to 70kb/sec
|
||||
//Acquire::http::Dl-Limit "70";
|
||||
|
||||
// Enable logging to syslog. Default is False
|
||||
// Unattended-Upgrade::SyslogEnable "false";
|
||||
|
||||
// Specify syslog facility. Default is daemon
|
||||
// Unattended-Upgrade::SyslogFacility "daemon";
|
||||
|
||||
// Download and install upgrades only on AC power
|
||||
// (i.e. skip or gracefully stop updates on battery)
|
||||
// Unattended-Upgrade::OnlyOnACPower "true";
|
||||
|
||||
// Download and install upgrades only on non-metered connection
|
||||
// (i.e. skip or gracefully stop updates on a metered connection)
|
||||
// Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true";
|
||||
|
||||
// Verbose logging
|
||||
// Unattended-Upgrade::Verbose "false";
|
||||
|
||||
// Print debugging information both in unattended-upgrades and
|
||||
// in unattended-upgrade-shutdown
|
||||
// Unattended-Upgrade::Debug "false";
|
|
@ -0,0 +1,32 @@
|
|||
# Welcome to the chrony configuration file. See chrony.conf(5) for more
|
||||
# information about usuable directives.
|
||||
server ntp-1.vt.edu iburst
|
||||
server ntp-2.vt.edu iburst
|
||||
server ntp-3.vt.edu iburst
|
||||
server ntp-4.vt.edu iburst
|
||||
pool 2.debian.pool.ntp.org iburst
|
||||
|
||||
# This directive specify the location of the file containing ID/key pairs for
|
||||
# NTP authentication.
|
||||
keyfile /etc/chrony/chrony.keys
|
||||
|
||||
# This directive specify the file into which chronyd will store the rate
|
||||
# information.
|
||||
driftfile /var/lib/chrony/chrony.drift
|
||||
|
||||
# Uncomment the following line to turn logging on.
|
||||
#log tracking measurements statistics
|
||||
|
||||
# Log files location.
|
||||
logdir /var/log/chrony
|
||||
|
||||
# Stop bad estimates upsetting machine clock.
|
||||
maxupdateskew 100.0
|
||||
|
||||
# This directive enables kernel synchronisation (every 11 minutes) of the
|
||||
# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
|
||||
rtcsync
|
||||
|
||||
# Step the system clock instead of slewing it if the adjustment is larger than
|
||||
# one second, but only in the first three clock updates.
|
||||
makestep 1 3
|
|
@ -0,0 +1 @@
|
|||
/bigdata 10.42.0.0/24(ro,all_squash,no_subtree_check) 10.200.0.0/24(rw,no_subtree_check,no_root_squash)
|
|
@ -0,0 +1,37 @@
|
|||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Entries in this file show the compile time defaults.
|
||||
# You can change settings by editing this file.
|
||||
# Defaults can be restored by simply deleting this file.
|
||||
#
|
||||
# See logind.conf(5) for details.
|
||||
|
||||
[Login]
|
||||
#NAutoVTs=6
|
||||
#ReserveVT=6
|
||||
#KillUserProcesses=no
|
||||
#KillOnlyUsers=
|
||||
#KillExcludeUsers=root
|
||||
#InhibitDelayMaxSec=5
|
||||
HandlePowerKey=ignore
|
||||
HandleSuspendKey=ignore
|
||||
HandleHibernateKey=ignore
|
||||
#HandleLidSwitch=suspend
|
||||
#HandleLidSwitchExternalPower=suspend
|
||||
#HandleLidSwitchDocked=ignore
|
||||
#PowerKeyIgnoreInhibited=no
|
||||
#SuspendKeyIgnoreInhibited=no
|
||||
#HibernateKeyIgnoreInhibited=no
|
||||
#LidSwitchIgnoreInhibited=yes
|
||||
#HoldoffTimeoutSec=30s
|
||||
#IdleAction=ignore
|
||||
#IdleActionSec=30min
|
||||
#RuntimeDirectorySize=10%
|
||||
#RemoveIPC=yes
|
||||
#InhibitorsMax=8192
|
||||
#SessionsMax=8192
|
|
@ -0,0 +1,122 @@
|
|||
# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
|
||||
|
||||
# This is the sshd server system-wide configuration file. See
|
||||
# sshd_config(5) for more information.
|
||||
|
||||
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
||||
|
||||
# The strategy used for options in the default sshd_config shipped with
|
||||
# OpenSSH is to specify options with their default value where
|
||||
# possible, but leave them commented. Uncommented options override the
|
||||
# default value.
|
||||
|
||||
Port 22
|
||||
Port 2222
|
||||
#AddressFamily any
|
||||
#ListenAddress 0.0.0.0
|
||||
#ListenAddress ::
|
||||
|
||||
#HostKey /etc/ssh/ssh_host_rsa_key
|
||||
#HostKey /etc/ssh/ssh_host_ecdsa_key
|
||||
#HostKey /etc/ssh/ssh_host_ed25519_key
|
||||
|
||||
# Ciphers and keying
|
||||
#RekeyLimit default none
|
||||
|
||||
# Logging
|
||||
#SyslogFacility AUTH
|
||||
#LogLevel INFO
|
||||
|
||||
# Authentication:
|
||||
|
||||
#LoginGraceTime 2m
|
||||
PermitRootLogin prohibit-password
|
||||
#StrictModes yes
|
||||
#MaxAuthTries 6
|
||||
#MaxSessions 10
|
||||
|
||||
#PubkeyAuthentication yes
|
||||
|
||||
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
|
||||
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
|
||||
|
||||
#AuthorizedPrincipalsFile none
|
||||
|
||||
#AuthorizedKeysCommand none
|
||||
#AuthorizedKeysCommandUser nobody
|
||||
|
||||
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
|
||||
#HostbasedAuthentication no
|
||||
# Change to yes if you don't trust ~/.ssh/known_hosts for
|
||||
# HostbasedAuthentication
|
||||
#IgnoreUserKnownHosts no
|
||||
# Don't read the user's ~/.rhosts and ~/.shosts files
|
||||
#IgnoreRhosts yes
|
||||
|
||||
# To disable tunneled clear text passwords, change to no here!
|
||||
PasswordAuthentication no
|
||||
#PermitEmptyPasswords no
|
||||
|
||||
# Change to yes to enable challenge-response passwords (beware issues with
|
||||
# some PAM modules and threads)
|
||||
ChallengeResponseAuthentication no
|
||||
|
||||
# Kerberos options
|
||||
#KerberosAuthentication no
|
||||
#KerberosOrLocalPasswd yes
|
||||
#KerberosTicketCleanup yes
|
||||
#KerberosGetAFSToken no
|
||||
|
||||
# GSSAPI options
|
||||
#GSSAPIAuthentication no
|
||||
#GSSAPICleanupCredentials yes
|
||||
#GSSAPIStrictAcceptorCheck yes
|
||||
#GSSAPIKeyExchange no
|
||||
|
||||
# Set this to 'yes' to enable PAM authentication, account processing,
|
||||
# and session processing. If this is enabled, PAM authentication will
|
||||
# be allowed through the ChallengeResponseAuthentication and
|
||||
# PasswordAuthentication. Depending on your PAM configuration,
|
||||
# PAM authentication via ChallengeResponseAuthentication may bypass
|
||||
# the setting of "PermitRootLogin without-password".
|
||||
# If you just want the PAM account and session checks to run without
|
||||
# PAM authentication, then enable this but set PasswordAuthentication
|
||||
# and ChallengeResponseAuthentication to 'no'.
|
||||
UsePAM yes
|
||||
|
||||
#AllowAgentForwarding yes
|
||||
#AllowTcpForwarding yes
|
||||
#GatewayPorts no
|
||||
X11Forwarding yes
|
||||
#X11DisplayOffset 10
|
||||
#X11UseLocalhost yes
|
||||
#PermitTTY yes
|
||||
PrintMotd no
|
||||
#PrintLastLog yes
|
||||
#TCPKeepAlive yes
|
||||
#PermitUserEnvironment no
|
||||
#Compression delayed
|
||||
#ClientAliveInterval 0
|
||||
#ClientAliveCountMax 3
|
||||
#UseDNS no
|
||||
#PidFile /var/run/sshd.pid
|
||||
#MaxStartups 10:30:100
|
||||
#PermitTunnel no
|
||||
#ChrootDirectory none
|
||||
#VersionAddendum none
|
||||
|
||||
# no default banner path
|
||||
#Banner none
|
||||
|
||||
# Allow client to pass locale environment variables
|
||||
AcceptEnv LANG LC_*
|
||||
|
||||
# override default of no subsystems
|
||||
Subsystem sftp /usr/lib/openssh/sftp-server
|
||||
|
||||
# Example of overriding settings on a per-user basis
|
||||
#Match User anoncvs
|
||||
# X11Forwarding no
|
||||
# AllowTcpForwarding no
|
||||
# PermitTTY no
|
||||
# ForceCommand cvs server
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
- name: Restart systemd-logind service
|
||||
service:
|
||||
name: systemd-logind
|
||||
state: restarted
|
||||
|
||||
- name: Restart chrony service
|
||||
service:
|
||||
name: chrony
|
||||
state: restarted
|
||||
|
||||
- name: Restart sshd service
|
||||
service:
|
||||
name: sshd
|
||||
state: restarted
|
||||
|
||||
- name: Re-export exportfs
|
||||
command: exportfs -arv
|
|
@ -0,0 +1,8 @@
|
|||
[router]
|
||||
corsa
|
||||
|
||||
[nfs]
|
||||
bigdummy interface=enp2s0
|
||||
|
||||
[compute]
|
||||
fogcutter interface=eno1
|
|
@ -0,0 +1,196 @@
|
|||
# All hosts are debian 10
|
||||
---
|
||||
# Common
|
||||
- hosts: compute,nfs,router
|
||||
become: yes
|
||||
handlers:
|
||||
- import_tasks: handlers.yml
|
||||
tasks:
|
||||
# Core
|
||||
- name: Install common packages
|
||||
apt:
|
||||
name:
|
||||
- apt-listchanges
|
||||
- chrony
|
||||
- curl
|
||||
- git
|
||||
- htop
|
||||
- iperf3
|
||||
- mosh
|
||||
- nmap
|
||||
- tmux
|
||||
- unattended-upgrades
|
||||
- vim
|
||||
force_apt_get: yes
|
||||
update_cache: yes
|
||||
|
||||
# TODO Change defaults
|
||||
- name: Configure unattended-upgrades
|
||||
copy:
|
||||
src: files/50unattended-upgrades
|
||||
dest: /etc/apt/apt.conf.d/50unattended-upgrades
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
|
||||
- name: Enable unattended-upgrades
|
||||
copy:
|
||||
src: files/20auto-upgrades
|
||||
dest: /etc/apt/apt.conf.d/20auto-upgrades
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
|
||||
- name: Disable power and reset buttons
|
||||
copy:
|
||||
src: files/logind.conf
|
||||
dest: /etc/systemd/logind.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart systemd-logind service
|
||||
|
||||
- name: Set chrony ntp servers
|
||||
copy:
|
||||
src: files/chrony.conf
|
||||
dest: /etc/chrony/chrony.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart chrony service
|
||||
|
||||
# Core networking
|
||||
- name: Configure sshd_config to listen on 2222/22 and disable password auth
|
||||
copy:
|
||||
src: files/sshd_config
|
||||
dest: /etc/ssh/sshd_config
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart sshd service
|
||||
|
||||
## Changes will take effect during next reboot
|
||||
## (determined by unattended-upgrades)
|
||||
- name: Configure sysctl with IPv6 privacy extensions
|
||||
template:
|
||||
src: templates/local.conf.j2
|
||||
dest: /etc/sysctl.d/local.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
|
||||
### Router
|
||||
##- hosts: router
|
||||
## become: yes
|
||||
## tasks:
|
||||
## - name: Install frrouting and related router packages
|
||||
## - name: Configure bgp, etc???
|
||||
|
||||
# Media networking (Wireguard VPN, NFS)
|
||||
- hosts: compute,nfs
|
||||
become: yes
|
||||
handlers:
|
||||
- import_tasks: handlers.yml
|
||||
tasks:
|
||||
- name: Add unstable repository
|
||||
shell: |
|
||||
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
|
||||
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
|
||||
args:
|
||||
creates: /etc/apt/sources.list.d/unstable.list
|
||||
|
||||
- name: Install media networking packages
|
||||
apt:
|
||||
name:
|
||||
- nfs-common
|
||||
- wireguard
|
||||
force_apt_get: yes
|
||||
update_cache: yes
|
||||
|
||||
# Manually do wireguard config https://wiki.debian.org/Wireguard
|
||||
|
||||
# NFS core config
|
||||
# ASSUMES /bigdata IS CONFIGURED (make sure dir is 755)
|
||||
- hosts: nfs
|
||||
become: yes
|
||||
handlers:
|
||||
- import_tasks: handlers.yml
|
||||
tasks:
|
||||
- name: Install NFS server package
|
||||
apt:
|
||||
name: nfs-kernel-server
|
||||
force_apt_get: yes
|
||||
update_cache: yes
|
||||
|
||||
- name: Export /bigdata
|
||||
copy:
|
||||
src: files/exports
|
||||
dest: /etc/exports
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Re-export exportfs
|
||||
|
||||
# Compute core config
|
||||
- hosts: compute
|
||||
become: yes
|
||||
tasks:
|
||||
- name: Install Docker + compute packages
|
||||
apt:
|
||||
name:
|
||||
- apt-transport-https
|
||||
- ca-certificates
|
||||
- curl
|
||||
- gnupg2
|
||||
- software-properties-common
|
||||
- sshfs
|
||||
force_apt_get: yes
|
||||
update_cache: yes
|
||||
|
||||
- name: Mount bigdummy /bigdata via NFS
|
||||
mount:
|
||||
src: 10.200.0.202:/bigdata
|
||||
path: /bigdata
|
||||
fstype: nfs
|
||||
opts: soft,nodev,nosuid
|
||||
state: mounted
|
||||
|
||||
- name: Create /media-vtluug directory
|
||||
file:
|
||||
path: /media-vtluug
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
# Might require running manually mounting
|
||||
- name: Mount vtluug /media via sshfs
|
||||
mount:
|
||||
src: pew-media@dirtycow.vtluug.org:/nfs/cistern/share/media
|
||||
path: /media-vtluug
|
||||
fstype: fuse.sshfs
|
||||
opts: allow_other,ro,_netdev,IdentityFile=/home/paul/.ssh/id_rsa
|
||||
state: mounted
|
||||
|
||||
- name: Add Docker GPG key
|
||||
apt_key:
|
||||
url: https://download.docker.com/linux/debian/gpg
|
||||
|
||||
- name: Add Docker APT repository
|
||||
apt_repository:
|
||||
repo: deb [arch=amd64] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable
|
||||
|
||||
- name: Install Docker CE
|
||||
apt:
|
||||
name:
|
||||
- docker-ce
|
||||
- docker-ce-cli
|
||||
- containerd.io
|
||||
force_apt_get: yes
|
||||
update_cache: yes
|
||||
|
||||
- name: Add paul to docker group
|
||||
user:
|
||||
name: paul
|
||||
groups: docker
|
||||
append: yes
|
||||
|
||||
# Clone docker-manifests repo to start services
|
|
@ -0,0 +1 @@
|
|||
net.ipv6.conf.{{ interface }}.use_tempaddr=2
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker run \
|
||||
--name syncthing \
|
||||
--detach \
|
||||
--restart unless-stopped \
|
||||
--env PUID=1000 \
|
||||
--env PGID=1000 \
|
||||
--env TZ=Europe/London \
|
||||
--env UMASK_SET=022 \
|
||||
--volume $HOME/.config/syncthing:/config:rw \
|
||||
--volume $HOME/sync:/sync-docker:rw \
|
||||
--publish 8384:8384 \
|
||||
--publish 22000:22000 \
|
||||
--publish 21027:21027/udp \
|
||||
linuxserver/syncthing:latest
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker run \
|
||||
--name airsonic \
|
||||
--detach \
|
||||
--restart unless-stopped \
|
||||
--env PUID=1000 \
|
||||
--env PGID=1000 \
|
||||
--env TZ=US/Easter \
|
||||
--volume $PWD/config:/config \
|
||||
--volume /bigdata/media/music:/media/music:ro \
|
||||
--volume /bigdata/media/playlists:/media/playlists \
|
||||
--volume /bigdata/media/podcasts:/media/podcasts:ro \
|
||||
--publish 10.42.0.203:4040:4040 \
|
||||
linuxserver/airsonic:latest
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker run \
|
||||
--name minecraft \
|
||||
--detach \
|
||||
--restart unless-stopped \
|
||||
--env EULA=TRUE \
|
||||
--env MAX_MEMORY=8G \
|
||||
--volume $PWD/data:/data \
|
||||
--publish 10.42.0.203:25565:25565 \
|
||||
--publish [2601:5c0:c100:6e65:96c6:91ff:feab:69e3]:25565:25565 \
|
||||
itzg/minecraft-server:latest
|
|
@ -0,0 +1 @@
|
|||
Mostly stolen from https://github.com/vtluug/docker-manifests/tree/master/sczi/nginx
|
|
@ -0,0 +1,46 @@
|
|||
# This is the custom version of the jail.conf for fail2ban
|
||||
# Feel free to modify this and add additional filters
|
||||
# Then you can drop the new filter conf files into the fail2ban-filters
|
||||
# folder and restart the container
|
||||
|
||||
[DEFAULT]
|
||||
|
||||
# "bantime" is the number of seconds that a host is banned.
|
||||
bantime = 600
|
||||
|
||||
# A host is banned if it has generated "maxretry" during the last "findtime"
|
||||
# seconds.
|
||||
findtime = 600
|
||||
|
||||
# "maxretry" is the number of failures before a host get banned.
|
||||
maxretry = 5
|
||||
|
||||
|
||||
[ssh]
|
||||
|
||||
enabled = false
|
||||
|
||||
|
||||
[nginx-http-auth]
|
||||
|
||||
enabled = true
|
||||
filter = nginx-http-auth
|
||||
port = http,https
|
||||
logpath = /config/log/nginx/error.log
|
||||
|
||||
|
||||
[nginx-badbots]
|
||||
|
||||
enabled = true
|
||||
port = http,https
|
||||
filter = nginx-badbots
|
||||
logpath = /config/log/nginx/access.log
|
||||
maxretry = 2
|
||||
|
||||
|
||||
[nginx-botsearch]
|
||||
|
||||
enabled = true
|
||||
port = http,https
|
||||
filter = nginx-botsearch
|
||||
logpath = /config/log/nginx/access.log
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker run \
|
||||
--name nginx \
|
||||
--detach \
|
||||
--restart unless-stopped \
|
||||
--env PUID=1000 \
|
||||
--env PGID=1000 \
|
||||
--env EMAIL=sysadmin@seaturtle.pw \
|
||||
--env URL=seaturtle.pw \
|
||||
--env SUBDOMAINS=birman,donskoy,fogcutter,madone,manx,sphynx,www \
|
||||
--env VALIDATION=html \
|
||||
--env TZ=US/Eastern \
|
||||
--volume $PWD/config:/config:rw \
|
||||
--volume $PWD/nginx.conf:/config/nginx/nginx.conf:ro \
|
||||
--volume $PWD/ssl.conf:/config/nginx/ssl.conf:ro \
|
||||
--volume $PWD/site-confs:/config/nginx/site-confs:ro \
|
||||
--volume $PWD/jail.local:/config/jail2ban/jail.local:ro \
|
||||
--publish 10.42.0.203:80:80 \
|
||||
--publish 10.42.0.203:443:443 \
|
||||
--publish [2601:5c0:c100:6e65:96c6:91ff:feab:69e3]:80:80 \
|
||||
--publish [2601:5c0:c100:6e65:96c6:91ff:feab:69e3]:443:443 \
|
||||
linuxserver/letsencrypt:latest
|
|
@ -0,0 +1,61 @@
|
|||
## Version 2018/01/29 - Changelog: https://github.com/linuxserver/docker-letsencrypt/commits/master/root/defaults/nginx.conf
|
||||
|
||||
user abc;
|
||||
worker_processes 4;
|
||||
pid /run/nginx.pid;
|
||||
include /etc/nginx/modules/*.conf;
|
||||
|
||||
events {
|
||||
worker_connections 768;
|
||||
# multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
|
||||
##
|
||||
# Basic Settings
|
||||
##
|
||||
|
||||
sendfile on;
|
||||
tcp_nopush on;
|
||||
tcp_nodelay on;
|
||||
keepalive_timeout 65;
|
||||
types_hash_max_size 2048;
|
||||
# server_tokens off;
|
||||
|
||||
# server_names_hash_bucket_size 64;
|
||||
# server_name_in_redirect off;
|
||||
|
||||
client_max_body_size 0;
|
||||
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
##
|
||||
# Logging Settings
|
||||
##
|
||||
|
||||
access_log /config/log/nginx/access.log;
|
||||
error_log /config/log/nginx/error.log;
|
||||
|
||||
##
|
||||
# Gzip Settings
|
||||
##
|
||||
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
|
||||
# gzip_vary on;
|
||||
# gzip_proxied any;
|
||||
# gzip_comp_level 6;
|
||||
# gzip_buffers 16 8k;
|
||||
# gzip_http_version 1.1;
|
||||
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
||||
|
||||
##
|
||||
# Virtual Host Configs
|
||||
##
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
include /config/nginx/site-confs/default;
|
||||
include /config/nginx/site-confs/*.enabled;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
## Based on version below; but heavily modified for LUUG
|
||||
## Version 2018/09/12 - Changelog: https://github.com/linuxserver/docker-letsencrypt/commits/master/root/defaults/default
|
||||
|
||||
# This is the main file that will be pe present no matter what
|
||||
# Individual sites are specified in /config/nginx/sites/*.enabled
|
||||
|
||||
# Redirect unknown HTTP traffic to https://seaturtle.pw
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
server_name _;
|
||||
|
||||
return 301 https://seaturtle.pw;
|
||||
}
|
||||
|
||||
# Redirect unknown HTTPS traffic to https://seaturtle.pw
|
||||
# If we don't have a cert for the site the client get an error but that's fine
|
||||
server {
|
||||
listen 443 default_server;
|
||||
listen [::]:443 default_server;
|
||||
server_name _;
|
||||
|
||||
# ssl conf
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
return 301 https://seaturtle.pw;
|
||||
}
|
||||
|
||||
# Enabled sites are included in /config/nginx/nginx.conf
|
|
@ -0,0 +1,50 @@
|
|||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name donskoy.seaturtle.pw;
|
||||
|
||||
return 301 https://donskoy.seaturtle.pw$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
server_name www.seaturtle.pw;
|
||||
|
||||
# ssl conf
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
return 301 https://seaturtle.pw$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
server_name donskoy.seaturtle.pw;
|
||||
|
||||
# ssl conf
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
client_max_body_size 1M;
|
||||
|
||||
# Main site
|
||||
location / {
|
||||
proxy_pass http://bitwardenrs:80;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
# Notifications
|
||||
location /notifications/hub {
|
||||
proxy_pass http://bitwardenrs:3012;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
|
||||
# Notification negotiation?
|
||||
location /notifications/hub/negotiate {
|
||||
proxy_pass http://bitwardenrs:80;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name seaturtle.pw www.seaturtle.pw;
|
||||
|
||||
return 301 https://seaturtle.pw$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
server_name www.seaturtle.pw;
|
||||
|
||||
# ssl conf
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
return 301 https://seaturtle.pw$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
server_name seaturtle.pw;
|
||||
|
||||
# ssl conf
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
client_max_body_size 1M;
|
||||
|
||||
# Main site
|
||||
location / {
|
||||
proxy_pass https://paulwalko.github.io;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
## Version 2018/05/31 - Changelog: https://github.com/linuxserver/docker-letsencrypt/commits/master/root/defaults/ssl.conf
|
||||
|
||||
# session settings
|
||||
ssl_session_timeout 1d;
|
||||
ssl_session_cache shared:SSL:50m;
|
||||
ssl_session_tickets off;
|
||||
|
||||
# Diffie-Hellman parameter for DHE cipher suites
|
||||
ssl_dhparam /config/nginx/dhparams.pem;
|
||||
|
||||
# ssl certs
|
||||
#ssl_certificate /config/keys/letsencrypt/fullchain.pem;
|
||||
#ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
|
||||
ssl_certificate /etc/letsencrypt/live/vtluug.org/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/vtluug.org/privkey.pem;
|
||||
|
||||
# protocols
|
||||
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
|
||||
|
||||
# HSTS, remove # from the line below to enable HSTS
|
||||
#add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
|
||||
|
||||
# OCSP Stapling
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
|
||||
# Optional additional headers
|
||||
#add_header Content-Security-Policy "upgrade-insecure-requests";
|
||||
#add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
#add_header X-XSS-Protection "1; mode=block" always;
|
||||
#add_header X-Content-Type-Options "nosniff" always;
|
||||
#add_header X-UA-Compatible "IE=Edge" always;
|
||||
#add_header Cache-Control "no-transform" always;
|
||||
#add_header Referrer-Policy "same-origin" always;
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker run \
|
||||
--name plex \
|
||||
--detach \
|
||||
--restart unless-stopped \
|
||||
--env PUID=1000 \
|
||||
--env PGID=1000 \
|
||||
--env VERSION=docker \
|
||||
--volume $PWD/config:/config:rw \
|
||||
--volume /bigdata/media/movies:/media/movies:ro \
|
||||
--volume /bigdata/media/music:/media/music:ro \
|
||||
--volume /media-vtluug:/media/media-vtluug:ro \
|
||||
--net host \
|
||||
linuxserver/plex:latest
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker run -d \
|
||||
--name ut2004 \
|
||||
-p 10.42.0.203:5000:80 \
|
||||
-p 10.42.0.203:7777:7777 \
|
||||
-p 10.42.0.203:7778:7778 \
|
||||
-e "CONFIG_1=[Engine.AccessControl];AdminPassword=password123;[UWeb.WebServer];bEnabled=True" \
|
||||
-e "UT2004_CMD=CTF-FACECLASSIC?game=XGame.xCTFGame" \
|
||||
reflectivecode/ut2004
|
Loading…
Reference in New Issue