Compare commits
No commits in common. "main" and "compose" have entirely different histories.
27 changed files with 612 additions and 488 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
*/secrets/*
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
# Server Configuration for Adam Home Suite of Applications
|
||||
# Public Server Setup
|
||||
|
||||
This repo is the basic setup of the [adamhome.io](adamhome.io) domain
|
||||
This repository contains a set of scripts to setup and configure
|
||||
a set of services to reclaim your internet independence and remove
|
||||
your data from the clutches of large corporations.
|
||||
|
|
|
|||
60
create_reverse_proxy.sh
Executable file
60
create_reverse_proxy.sh
Executable file
|
|
@ -0,0 +1,60 @@
|
|||
#!/bin/bash
|
||||
|
||||
export NEXTCLOUD_URL=nextcloud.adamhome.dev
|
||||
export APACHE_PORT=11000
|
||||
export APACHE_COMM=127.0.0.1
|
||||
|
||||
###### FOR NGINX
|
||||
|
||||
cat << EOT >> /tmp/nginx_nextcloud.txt
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80; # comment to disable IPv6
|
||||
|
||||
if ($scheme = "http") {
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2; # comment to disable IPv6
|
||||
|
||||
server_name ${NEXTCLOUD_URL};
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:11000$request_uri;
|
||||
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
proxy_set_header X-Forwarded-Scheme $scheme;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Accept-Encoding "";
|
||||
proxy_set_header Host $host;
|
||||
|
||||
client_body_buffer_size 512k;
|
||||
proxy_read_timeout 86400s;
|
||||
client_max_body_size 0;
|
||||
|
||||
# Websocket
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
}
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/${NEXTCLOUD_URL}/fullchain.pem; # managed by certbot on host machine
|
||||
ssl_certificate_key /etc/letsencrypt/live/${NEXTCLOUD_URL}/privkey.pem; # managed by certbot on host machine
|
||||
|
||||
ssl_session_timeout 1d;
|
||||
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
|
||||
ssl_session_tickets off;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
|
||||
ssl_prefer_server_ciphers off;
|
||||
}
|
||||
EOT
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
services:
|
||||
server:
|
||||
image: image/image:1.0.0
|
||||
container_name: image
|
||||
restart: always
|
||||
ports:
|
||||
- '3000:3000'
|
||||
environment:
|
||||
- VARIABLE=value
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- stuff
|
||||
secrets:
|
||||
- db_password
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1000M
|
||||
healthcheck:
|
||||
test: command
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: image:1.0.0
|
||||
container_name: image-db
|
||||
restart: always
|
||||
environment:
|
||||
- STATUS=running
|
||||
volumes:
|
||||
- ./mysql:/var/lib/mysql
|
||||
networks:
|
||||
- stuff
|
||||
secrets:
|
||||
- db_root_password
|
||||
- db_password
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: secrets/db_password.txt
|
||||
db_root_password:
|
||||
file: secrets/db_root_password.txt
|
||||
|
||||
networks:
|
||||
stuff:
|
||||
external: false
|
||||
|
||||
volumes:
|
||||
db-data:
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
APP_NAME = Forgejo
|
||||
RUN_MODE = prod
|
||||
APP_SLOGAN = Beyond coding. We Forge.
|
||||
RUN_USER = git
|
||||
WORK_PATH = /data/gitea
|
||||
|
||||
[repository]
|
||||
ROOT = /data/git/repositories
|
||||
|
||||
[repository.local]
|
||||
LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
|
||||
|
||||
[repository.upload]
|
||||
TEMP_PATH = /data/gitea/uploads
|
||||
|
||||
[server]
|
||||
APP_DATA_PATH = /data/gitea
|
||||
DOMAIN = 10.0.1.2
|
||||
SSH_DOMAIN = 10.0.1.2
|
||||
HTTP_PORT = 3000
|
||||
ROOT_URL = https://forgejo.adamhome.io/
|
||||
DISABLE_SSH = false
|
||||
SSH_PORT = 22
|
||||
SSH_LISTEN_PORT = 22
|
||||
LFS_START_SERVER = true
|
||||
OFFLINE_MODE = true
|
||||
|
||||
[database]
|
||||
PATH = /data/gitea/gitea.db
|
||||
DB_TYPE = mysql
|
||||
HOST = db:3306
|
||||
NAME = forgejo
|
||||
USER = forgejo
|
||||
LOG_SQL = false
|
||||
SCHEMA =
|
||||
SSL_MODE = disable
|
||||
|
||||
[indexer]
|
||||
ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
|
||||
|
||||
[session]
|
||||
PROVIDER_CONFIG = /data/gitea/sessions
|
||||
PROVIDER = file
|
||||
|
||||
[picture]
|
||||
AVATAR_UPLOAD_PATH = /data/gitea/avatars
|
||||
REPOSITORY_AVATAR_UPLOAD_PATH = /data/gitea/repo-avatars
|
||||
|
||||
[attachment]
|
||||
PATH = /data/gitea/attachments
|
||||
|
||||
[log]
|
||||
MODE = console
|
||||
LEVEL = info
|
||||
ROOT_PATH = /data/gitea/log
|
||||
|
||||
[security]
|
||||
INSTALL_LOCK = true
|
||||
SECRET_KEY =
|
||||
REVERSE_PROXY_LIMIT = 1
|
||||
REVERSE_PROXY_TRUSTED_PROXIES = *
|
||||
PASSWORD_HASH_ALGO = pbkdf2_hi
|
||||
|
||||
[service]
|
||||
DISABLE_REGISTRATION = false
|
||||
REGISTER_MANUAL_CONFIRM = true
|
||||
REQUIRE_SIGNIN_VIEW = false
|
||||
REGISTER_EMAIL_CONFIRM = false
|
||||
ENABLE_NOTIFY_MAIL = false
|
||||
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
|
||||
ENABLE_CAPTCHA = false
|
||||
DEFAULT_KEEP_EMAIL_PRIVATE = false
|
||||
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
|
||||
DEFAULT_ENABLE_TIMETRACKING = true
|
||||
NO_REPLY_ADDRESS = noreply.adamhome.io
|
||||
|
||||
[lfs]
|
||||
PATH = /data/git/lfs
|
||||
|
||||
[mailer]
|
||||
ENABLED = false
|
||||
|
||||
[openid]
|
||||
ENABLE_OPENID_SIGNIN = true
|
||||
ENABLE_OPENID_SIGNUP = true
|
||||
|
||||
[cron.update_checker]
|
||||
ENABLED = true
|
||||
|
||||
[repository.pull-request]
|
||||
DEFAULT_MERGE_STYLE = merge
|
||||
|
||||
[repository.signing]
|
||||
DEFAULT_TRUST_MODEL = committer
|
||||
|
||||
[oauth2]
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
services:
|
||||
forgejo:
|
||||
image: codeberg.org/forgejo/forgejo:11.0.14
|
||||
container_name: forgejo
|
||||
restart: always
|
||||
ports:
|
||||
- '3000:3000'
|
||||
- '222:22'
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- FORGEJO__database__DB_TYPE=mysql
|
||||
- FORGEJO__database__HOST=db:3306
|
||||
- FORGEJO__database__NAME=forgejo
|
||||
- FORGEJO__database__USER=forgejo
|
||||
- FORGEJO__database__PASSWD_FILE=/run/secrets/db_password
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- forgejo
|
||||
secrets:
|
||||
- db_password
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: mysql:8.4.9
|
||||
container_name: forgejo-db
|
||||
restart: always
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
|
||||
- MYSQL_USER=forgejo
|
||||
- MYSQL_PASSWORD_FILE=/run/secrets/db_password
|
||||
- MYSQL_DATABASE=forgejo
|
||||
volumes:
|
||||
- ./mysql:/var/lib/mysql
|
||||
networks:
|
||||
- forgejo
|
||||
secrets:
|
||||
- db_root_password
|
||||
- db_password
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: secrets/db_password.txt
|
||||
db_root_password:
|
||||
file: secrets/db_root_password.txt
|
||||
|
||||
networks:
|
||||
forgejo:
|
||||
external: false
|
||||
34
gitlab/docker-compose.yml
Normal file
34
gitlab/docker-compose.yml
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
version: '3.6'
|
||||
services:
|
||||
web:
|
||||
image: 'gitlab/gitlab-ce:latest'
|
||||
hostname: ${GITLAB_ADDRESS}
|
||||
container_name: gitlab
|
||||
environment:
|
||||
TZ: 'America/Los_Angeles'
|
||||
GITLAB_OMNIBUS_CONFIG: |
|
||||
external_url ${GITLAB_ADDRESS}
|
||||
gitlab_rails['lfs_enabled'] = true
|
||||
gitlab_rails['gitlab_shell_ssh_port'] = 2222
|
||||
# gitlab_rails['gitlab_email_enabled'] = true
|
||||
# gitlab_rails['gitlab_email_from'] = 'help@adamhome.dev'
|
||||
# gitlab_rails['gitlab_email_display_name'] = 'GitLab Help'
|
||||
# gitlab_rails['gitlab_email_reply_to'] = 'help@adamhome.dev'
|
||||
# gitlab_rails['smtp_enable'] = true
|
||||
# gitlab_rails['smtp_address'] = 'smtp.gmail.com'
|
||||
# gitlab_rails['smtp_port'] = 587
|
||||
# gitlab_rails['smtp_user_name'] = ''
|
||||
# gitlab_rails['smtp_password'] = ''
|
||||
# gitlab_rails['smtp_domain'] = 'smtp.gmail.com'
|
||||
# gitlab_rails['smtp_authentication'] = 'login'
|
||||
# gitlab_rails['smtp_enable_starttls_auto'] = true
|
||||
ports:
|
||||
- ${GITLAB_EXTERN_HTTPS}':443'
|
||||
- ${GITLAB_EXTERN_HTTP}':80'
|
||||
- ${GITLAB_EXTERN_SSH}':22'
|
||||
volumes:
|
||||
- $GITLAB_HOME/config:/etc/gitlab
|
||||
- $GITLAB_HOME/logs:/var/log/gitlab
|
||||
- $GITLAB_HOME/data:/var/opt/gitlab
|
||||
shm_size: '256m'
|
||||
restart: always
|
||||
60
gitlab/gitlab_install.sh
Executable file
60
gitlab/gitlab_install.sh
Executable file
|
|
@ -0,0 +1,60 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define admin user account
|
||||
if [ -z "$ADMIN_ACCOUNT"]
|
||||
then
|
||||
ADMIN_ACCOUNT=root
|
||||
fi
|
||||
su - ${ADMIN_ACCOUNT}
|
||||
|
||||
## Define bulk storage location
|
||||
if [ -z "$ZFS_DIR" ]
|
||||
then
|
||||
ZFS_DIR=/data
|
||||
fi
|
||||
|
||||
echo "Installing GitLab ..."
|
||||
GITLAB_HOME=${ZFS_DIR}/gitlab
|
||||
|
||||
GITLAB_ADDRESS=gitlab.adamhome.dev
|
||||
GITLAB_EXTERN_HTTPS=14443
|
||||
GITLAB_EXTERN_HTTP=14080
|
||||
GITLAB_EXTERN_SSH=22
|
||||
|
||||
if [ "${GITLAB_EXTERN_SSH}" -eq 22 ]
|
||||
then
|
||||
awk '{sub("#PORT=22","PORT=22")} {print}' /etc/ssh/sshd_config > /tmp/temp.txt && mv /tmp/temp.txt /etc/ssh/sshd_config
|
||||
awk '{sub("# PORT=22","PORT=22")} {print}' /etc/ssh/sshd_config > /tmp/temp.txt && mv /tmp/temp.txt /etc/ssh/sshd_config
|
||||
awk -v port=2222 '{sub("PORT=22","PORT="2222)} {print}' /etc/ssh/sshd_config > /tmp/temp.txt && mv /tmp/temp.txt /etc/ssh/sshd_config
|
||||
sudo systemctl reload sshd
|
||||
fi
|
||||
|
||||
sudo docker run --detach \
|
||||
--hostname ${GITLAB_ADDRESS} \
|
||||
--publish ${GITLAB_EXTERN_HTTPS}:443 \
|
||||
--publish ${GITLAB_EXTERN_HTTP}:80 \
|
||||
--publish ${GITLAB_EXTERN_SSH}:22 \
|
||||
--name gitlab \
|
||||
--restart always \
|
||||
--volume ${GITLAB_HOME}/config:/etc/gitlab \
|
||||
--volume ${GITLAB_HOME}/logs:/var/log/gitlab \
|
||||
--volume ${GITLAB_HOME}/data:/var/opt/gitlab \
|
||||
--shm-size 512m \
|
||||
gitlab/gitlab-ce:latest
|
||||
|
||||
## Uncomment if you want to monitor boot-up
|
||||
# sudo docker logs -f gitlab
|
||||
|
||||
# sudo docker exec -it gitlab /bin/bash
|
||||
# edit /etc/gitlab/gitlab.rb so that gitlab_rails['gitlab_shell_ssh_port'] = ${GITLAB_EXTERN_SSH}
|
||||
# while still in gitlab env, run gitlab-ctl reconfigure
|
||||
|
||||
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
|
||||
|
||||
echo "Successfully installed GitLab"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
17
handbrake/docker-compose.yml
Normal file
17
handbrake/docker-compose.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
version: '3'
|
||||
services:
|
||||
handbrake:
|
||||
container_name: handbrake
|
||||
ports:
|
||||
- 5800:5800
|
||||
volumes:
|
||||
- ${ZFS_DIR}/handbrake/config:/config:rw
|
||||
- ${ZFS_DIR}/handbrake/data:/storage:ro
|
||||
- ${ZFS_DIR}/handbrake/watch:/watch:rw
|
||||
- ${ZFS_DIR}/handbrake/output:/output:rw
|
||||
image: jlesage/handbrake
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
|
||||
|
||||
25
immich/.env
25
immich/.env
|
|
@ -1,25 +0,0 @@
|
|||
# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables
|
||||
|
||||
# The location where your uploaded files are stored
|
||||
UPLOAD_LOCATION=./library
|
||||
|
||||
# The location where your database files are stored. Network shares are not supported for the database
|
||||
DB_DATA_LOCATION=./postgres
|
||||
|
||||
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||
TZ=America/New_York
|
||||
|
||||
# The Immich version to use. You can pin this to a specific version like "v2.1.0"
|
||||
IMMICH_VERSION=v2.7.5
|
||||
|
||||
# Prometheus metrics are disabled by default. To enable them, uncomment the next line
|
||||
IMMICH_TELEMETRY_INCLUDE=all
|
||||
|
||||
# Connection secret for postgres. You should change it to a random password
|
||||
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
|
||||
DB_PASSWORD=/run/secrets/db_password
|
||||
|
||||
# The values below this line do not need to be changed
|
||||
###################################################################################
|
||||
DB_USERNAME=postgres
|
||||
DB_DATABASE_NAME=immich
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
#
|
||||
# WARNING: To install Immich, follow our guide: https://docs.immich.app/install/docker-compose
|
||||
#
|
||||
# Make sure to use the docker-compose.yml of the current release:
|
||||
#
|
||||
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
#
|
||||
# The compose file on main may not be compatible with the latest release.
|
||||
|
||||
name: immich
|
||||
|
||||
services:
|
||||
immich-server:
|
||||
container_name: immich-server
|
||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||
# extends:
|
||||
# file: hwaccel.transcoding.yml
|
||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
|
||||
- ${UPLOAD_LOCATION}:/data
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- '2283:2283'
|
||||
depends_on:
|
||||
- redis
|
||||
- database
|
||||
restart: always
|
||||
healthcheck:
|
||||
disable: false
|
||||
|
||||
immich-machine-learning:
|
||||
container_name: immich-machine-learning
|
||||
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
|
||||
# Example tag: ${IMMICH_VERSION:-release}-cuda
|
||||
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
|
||||
# extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration
|
||||
# file: hwaccel.ml.yml
|
||||
# service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
|
||||
volumes:
|
||||
- model-cache:/cache
|
||||
env_file:
|
||||
- .env
|
||||
restart: always
|
||||
healthcheck:
|
||||
disable: false
|
||||
|
||||
redis:
|
||||
container_name: immich-redis
|
||||
image: docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
database:
|
||||
container_name: immich-postgres
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_USER: ${DB_USERNAME}
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
|
||||
# DB_STORAGE_TYPE: 'HDD'
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
|
||||
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
|
||||
shm_size: 128mb
|
||||
restart: always
|
||||
secrets:
|
||||
- db_password
|
||||
healthcheck:
|
||||
disable: false
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: ./secrets/postgres_password.txt
|
||||
|
||||
volumes:
|
||||
model-cache:
|
||||
79
jupyter/jupyterhub_install.sh
Executable file
79
jupyter/jupyterhub_install.sh
Executable file
|
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define admin user account
|
||||
if [ -z "$ADMIN_ACCOUNT"]
|
||||
then
|
||||
ADMIN_ACCOUNT=root
|
||||
fi
|
||||
su - ${ADMIN_ACCOUNT}
|
||||
|
||||
## Define bulk storage location
|
||||
if [ -z "$ZFS_DIR" ]
|
||||
then
|
||||
ZFS_DIR=/data
|
||||
fi
|
||||
|
||||
## Ensure HOME directories are stored in ${ZFS_DIR}/home
|
||||
awk '{sub("#HOME=/home","HOME=/home")} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
awk '{sub("# HOME=/home","HOME=/home")} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
awk -v dir=${ZFS_DIR}/home '{sub("HOME=/home","HOME="dir)} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
|
||||
echo "Installing JupyterHub ..."
|
||||
# export TLJH_INSTALL_PREFIX=${ZFS_DIR}/tljh
|
||||
export TLJH_INSTALL_PREFIX=${ZFS_DIR}/jupyter
|
||||
|
||||
sudo ln -s ${TLJH_INSTALL_PREFIX} /opt/tljh
|
||||
|
||||
SYS_MEM=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
||||
SYS_CPU=$(grep -c ^processor /proc/cpuinfo)
|
||||
|
||||
JUPYTER_EXTERN_HTTP=15080
|
||||
JUPYTER_EXTERN_HTTPS=15443
|
||||
|
||||
if [ $SYS_MEM -gt 2097152 ]
|
||||
then
|
||||
let "SYS_MEM = $SYS_MEM - 1048576"
|
||||
else
|
||||
let "SYS_MEM = $SYS_MEM / 2"
|
||||
fi
|
||||
|
||||
if [ $SYS_CPU -gt 1 ]
|
||||
then
|
||||
let "SYS_CPU = $SYS_CPU - 1"
|
||||
fi
|
||||
|
||||
cat << EOT >> /tmp/requirements.txt
|
||||
numpy
|
||||
scipy
|
||||
matplotlib
|
||||
pandas
|
||||
tensorflow
|
||||
tensorrt
|
||||
pytorch
|
||||
torchvision
|
||||
torchaudio
|
||||
EOT
|
||||
|
||||
sudo apt install python3 python3-dev git curl
|
||||
curl -L https://tljh.jupyter.org/bootstrap.py | \
|
||||
sudo -E python3 - \
|
||||
--show-progress-page \
|
||||
--admin ${ADMIN_ACCOUNT}:systemPassword \
|
||||
--user-requirements-txt-url /tmp/requirements.txt
|
||||
|
||||
## Edit Jupyter Environment
|
||||
sudo tljh-config set http.port ${JUPYTER_EXTERN_HTTP}
|
||||
sudo tljh-config set https.port ${JUPYTER_EXTERN_HTTPS}
|
||||
sudo tljh-config set https.enabled true
|
||||
sudo tljh-config set https.tls.key /etc/letsencrypt/live/jupyter.adamhome.dev/privkey.pem
|
||||
sudo tljh-config set https.tls.cert /etc/letsencrypt/live/jupyter.adamhome.dev/fullchain.pem
|
||||
sudo tljh-config set limits.memory ${SYS_MEM}K
|
||||
sudo tljh-config set limits.cpu ${SYS_CPU}
|
||||
# sudo tljh-config set user_environment.default_app jupyterlab
|
||||
sudo tljh-config reload proxy
|
||||
sudo tljh-config reload
|
||||
|
||||
## Add conda to sudo path
|
||||
# sudo nano /etc/sudoers # append to secure_path (without variables) ${TLJH_INSTALL_PREFIX}/user/bin
|
||||
|
||||
echo "Successfully installed JupyterHub"
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
services:
|
||||
mealie:
|
||||
image: ghcr.io/mealie-recipes/mealie:v3.9.2
|
||||
container_name: mealie
|
||||
restart: always
|
||||
ports:
|
||||
- "9925:9000"
|
||||
environment:
|
||||
# Set Backend ENV Variables Here
|
||||
ALLOW_SIGNUP: "false"
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: America/New_York
|
||||
SMTP_HOST: smtp.gmail.com
|
||||
SMTP_PORT: 587
|
||||
SMTP_FROM_NAME: Mealie Help
|
||||
SMTP_AUTH_STRATEGY: TLS
|
||||
SMTP_FROM_EMAIL: help@adamhome.io
|
||||
SMTP_USER_FILE: /run/secrets/smtp-user
|
||||
SMTP_PASSWORD_FILE: /run/secrets/smtp-password
|
||||
BASE_URL: https://recipes.adamhome.io
|
||||
# Database Settings
|
||||
DB_ENGINE: postgres
|
||||
POSTGRES_USER_FILE: /run/secrets/db_user
|
||||
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
|
||||
POSTGRES_SERVER_FILE: /run/secrets/server
|
||||
POSTGRES_PORT_FILE: /run/secrets/port
|
||||
POSTGRES_DB_FILE: /run/secrets/db_name
|
||||
volumes:
|
||||
- ./data:/app/data/
|
||||
secrets:
|
||||
- db_name
|
||||
- db_password
|
||||
- db_user
|
||||
- port
|
||||
- server
|
||||
- smtp-password
|
||||
- smtp-user
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1000M
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
postgres:
|
||||
container_name: mealie-postgres
|
||||
image: docker.io/postgres:17.10
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
|
||||
POSTGRES_USER_FILE: /run/secrets/db_user
|
||||
PGUSER_FILE: /run/secrets/db_user
|
||||
POSTGRES_DB_FILE: /run/secrets/db_name
|
||||
volumes:
|
||||
- ./postgres:/var/lib/postgresql/data
|
||||
secrets:
|
||||
- db_name
|
||||
- db_password
|
||||
- db_user
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
|
||||
secrets:
|
||||
db_name:
|
||||
file: secrets/db_name.txt
|
||||
db_password:
|
||||
file: secrets/db_password.txt
|
||||
db_user:
|
||||
file: secrets/db_user.txt
|
||||
port:
|
||||
file: secrets/port.txt
|
||||
server:
|
||||
file: secrets/server.txt
|
||||
smtp-password:
|
||||
file: ./secrets/smtp_password.txt
|
||||
smtp-user:
|
||||
file: ./secrets/smtp_user.txt
|
||||
15
minecraft/docker-compose.yml
Normal file
15
minecraft/docker-compose.yml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
version: '3.6'
|
||||
services:
|
||||
mineos:
|
||||
image: hexparrot/mineos:latest
|
||||
container_name: mineos
|
||||
ports:
|
||||
- ${MINEOS_EXTERN_HTTP}':8443'
|
||||
- '25565:25565'
|
||||
environment:
|
||||
- USER_NAME=${USER_NAME}
|
||||
- USER_PASSWORD=${USER_PASSWORD}
|
||||
- TZ=America/Los_Angeles
|
||||
volumes:
|
||||
- ${ZFS_DIR}/minecraft:/var/games/minecraft
|
||||
restart: unless-stopped
|
||||
28
minecraft/mineos_install.sh
Executable file
28
minecraft/mineos_install.sh
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define bulk storage location
|
||||
if [ -z "$ZFS_DIR" ]
|
||||
then
|
||||
ZFS_DIR=/data
|
||||
fi
|
||||
|
||||
echo "Installing MineOS ..."
|
||||
USER_NAME=mcadmin
|
||||
USER_PASSWORD=rootWord
|
||||
|
||||
MINEOS_EXTERN_HTTP=13443
|
||||
|
||||
sudo docker run -td \
|
||||
--name=mineos \
|
||||
-p ${MINEOS_EXTERN_HTTP}:8443 \
|
||||
-p 25565:25565 \
|
||||
-e USER_PASSWORD=${USER_PASSWORD} \
|
||||
-e USER_NAME=${USER_NAME} \
|
||||
-v ${ZFS_DIR}/minecraft:/var/games/minecraft \
|
||||
--restart=unless-stopped \
|
||||
hexparrot/mineos:latest
|
||||
|
||||
echo "Successfully installed MineOS"
|
||||
|
||||
|
||||
|
||||
20
netboot_xyz/docker-compose.yml
Normal file
20
netboot_xyz/docker-compose.yml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
version: '2.1'
|
||||
services:
|
||||
netbootxyz:
|
||||
image: lscr.io/linuxserver/netbootxyz:latest
|
||||
container_name: netbootxyz
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Los_Angeles
|
||||
- MENU_VERSION=1.9.9
|
||||
- PORT_RANGE=30000:30010
|
||||
- SUBFOLDER=/
|
||||
volumes:
|
||||
- ${NETBOOTXYZ_HOME}/config:/config
|
||||
- ${NETBOOTXYZ_HOME}/assets:/assets
|
||||
ports:
|
||||
- 3000:3000
|
||||
- 69:69/udp
|
||||
- 8080:80
|
||||
restart: unless-stopped
|
||||
37
netboot_xyz/netbootxyz_install.sh
Normal file
37
netboot_xyz/netbootxyz_install.sh
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define admin user account
|
||||
if [ -z "$ADMIN_ACCOUNT"]
|
||||
then
|
||||
ADMIN_ACCOUNT=root
|
||||
fi
|
||||
su - ${ADMIN_ACCOUNT}
|
||||
|
||||
## Define bulk storage location
|
||||
if [ -z "$ZFS_DIR" ]
|
||||
then
|
||||
ZFS_DIR=/data
|
||||
fi
|
||||
|
||||
echo "Installing Netboot-xyz ..."
|
||||
NETBOOTXYZ_HOME=${ZFS_DIR}/netboot_xyz
|
||||
|
||||
NETBOOT_EXTERN_HTTP=11080
|
||||
|
||||
sudo docker run -d \
|
||||
--name netbootxyz \
|
||||
-p 3000:3000 \
|
||||
-p 69:69/udp \
|
||||
--publish ${NETBOOT_EXTERN_HTTP}:80 \
|
||||
--env PUID=1000 \
|
||||
--env PGID=1000 \
|
||||
--env TZ=America/Los_Angeles \
|
||||
--env MENU_VERSION=1.9.9 \
|
||||
--env PORT_RANGE=30000-30010 \
|
||||
--env SUBFOLDER=/ \
|
||||
--volume ${NETBOOTXYZ_HOME}/config:/config \
|
||||
--volume ${NETBOOTXYZ_HOME}/assets:/assets \
|
||||
--restart unless-stopped \
|
||||
lscr.io/linuxserver/netbootxyz:latest
|
||||
|
||||
echo "Successfully installed Netboot-xyz"
|
||||
19
nextcloud/docker-compose.yml
Normal file
19
nextcloud/docker-compose.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
version: '3'
|
||||
services:
|
||||
nextcloud:
|
||||
sig-proxy: false
|
||||
image: nextcloud/all-in-one:latest
|
||||
container_name: nextcloud-aio-mastercontainer
|
||||
ports:
|
||||
- 8080:8080
|
||||
environment:
|
||||
- TZ=America/Los_Angeles
|
||||
- NEXTCLOUD_DATADIR=${ZFS_DIR}/nextcloud/data
|
||||
- NEXTCLOUD_MOUNT=${ZFS_DIR}/nextcloud
|
||||
- APACHE_PORT=${APACHE_PORT}
|
||||
- APACHE_IP_BINDING=${APACHE_COMM}
|
||||
- NEXTCLOUD_MEMORY_LIMIT=${AIO_MEM}M
|
||||
volumes:
|
||||
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
restart: unless-stopped
|
||||
58
nextcloud/nextcloud_install.sh
Executable file
58
nextcloud/nextcloud_install.sh
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define admin user account
|
||||
if [ -z "$ADMIN_ACCOUNT"]
|
||||
then
|
||||
ADMIN_ACCOUNT=root
|
||||
fi
|
||||
su - ${ADMIN_ACCOUNT}
|
||||
|
||||
## Define bulk storage location
|
||||
if [ -z "$ZFS_DIR" ]
|
||||
then
|
||||
ZFS_DIR=/data
|
||||
fi
|
||||
|
||||
echo "Installing Nextcloud AIO ..."
|
||||
|
||||
if [ -z "$APACHE_COMM" ]
|
||||
then
|
||||
./create_reverse_proxy.sh
|
||||
fi
|
||||
|
||||
if [ -z "$SYS_MEM" ]
|
||||
then
|
||||
SYS_MEM=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
||||
fi
|
||||
|
||||
if [ $SYS_MEM -gt 2097152 ]
|
||||
then
|
||||
let "SYS_MEM = $SYS_MEM - 1048576"
|
||||
else
|
||||
let "SYS_MEM = $SYS_MEM / 2"
|
||||
fi
|
||||
|
||||
echo "Installing Nextcloud AIO ..."
|
||||
let "AIO_MEM = $SYS_MEM / 1024"
|
||||
NEXTCLD_EXTERN_HTTP=12080
|
||||
NEXTCLD_EXTERN_HTTPS=12443
|
||||
APACHE_COMM=127.0.0.1
|
||||
APACHE_PORT=${NEXTCLD_EXTERN_HTTPS}
|
||||
|
||||
sudo docker run -d \
|
||||
--sig-proxy=false \
|
||||
--name nextcloud-aio-mastercontainer \
|
||||
--restart always \
|
||||
--publish 8080:8080 \
|
||||
--env NEXTCLOUD_DATADIR=${ZFS_DIR}/nextcloud/data \
|
||||
--env NEXTCLOUD_MOUNT=${ZFS_DIR}/nextcloud \
|
||||
--env APACHE_PORT=${APACHE_PORT} \
|
||||
--env APACHE_IP_BINDING=${APACHE_COMM} \
|
||||
--env NEXTCLOUD_MEMORY_LIMIT=${AIO_MEM}M \
|
||||
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||
nextcloud/all-in-one:latest
|
||||
# --publish ${NEXTCLD_EXTERN_HTTP}:80 \
|
||||
# --publish ${NEXTCLD_EXTERN_HTTPS}:8443 \
|
||||
|
||||
echo "Successfully installed Nextcloud AIO"
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
services:
|
||||
nginx:
|
||||
image: 'jc21/nginx-proxy-manager:2.11.3'
|
||||
container_name: nginx-proxy
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
# These ports are in format <host-port>:<container-port>
|
||||
- '80:80' # Public HTTP Port
|
||||
- '443:443' # Public HTTPS Port
|
||||
- '81:81' # Admin Web Port
|
||||
# Add any other Stream port you want to expose
|
||||
# - '21:21' # FTP
|
||||
environment:
|
||||
TZ: "America/New_York"
|
||||
# Mysql/Maria connection parameters:
|
||||
DB_MYSQL_HOST: "db"
|
||||
DB_MYSQL_PORT: 3306
|
||||
DB_MYSQL_USER: "npm"
|
||||
DB_MYSQL_PASSWORD_FILE: "/run/secrets/db_password"
|
||||
DB_MYSQL_NAME: "npm"
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./letsencrypt:/etc/letsencrypt
|
||||
secrets:
|
||||
- db_password
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: 'jc21/mariadb-aria:10.11.5'
|
||||
container_name: nginx-db
|
||||
restart: always
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD_FILE: "/run/secrets/db_root_password"
|
||||
MYSQL_DATABASE: "npm"
|
||||
MYSQL_USER: "npm"
|
||||
MYSQL_PASSWORD_FILE: "/run/secrets/db_password"
|
||||
MARIADB_AUTO_UPGRADE: '1'
|
||||
volumes:
|
||||
- ./mysql:/var/lib/mysql
|
||||
secrets:
|
||||
- db_root_password
|
||||
- db_password
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: secrets/db_password.txt
|
||||
db_root_password:
|
||||
file: secrets/db_root_password.txt
|
||||
27
plex/docker-compose.yml
Normal file
27
plex/docker-compose.yml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
version: "2.1"
|
||||
services:
|
||||
plex:
|
||||
image: plexinc/pms-docker:latest
|
||||
container_name: plex
|
||||
network_mode: host
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Los_Angeles
|
||||
- VERSION=docker
|
||||
- PLEX_CLAIM=claim-Gh-Gk8R11eNyq7kg4Jxx
|
||||
volumes:
|
||||
- ${PLEX_HOME}/config:/config
|
||||
- ${PLEX_HOME}/transcode:/transcode
|
||||
- ${PLEX_HOME}/data:/data
|
||||
ports:
|
||||
- 32400:32400
|
||||
- 3005:3005
|
||||
- 8324:8324
|
||||
- 32469:32469
|
||||
- 1900:1900
|
||||
- 32410:32410
|
||||
- 32412:32412
|
||||
- 32413:32413
|
||||
- 32414:32414
|
||||
restart: unless-stopped
|
||||
30
plex/plex_install.sh
Normal file
30
plex/plex_install.sh
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define admin user account
|
||||
if [ -z "$ADMIN_ACCOUNT"]
|
||||
then
|
||||
ADMIN_ACCOUNT=root
|
||||
fi
|
||||
su - ${ADMIN_ACCOUNT}
|
||||
|
||||
## Define bulk storage location
|
||||
if [ -z "$ZFS_DIR" ]
|
||||
then
|
||||
ZFS_DIR=/data
|
||||
fi
|
||||
|
||||
echo "Installing Plex ..."
|
||||
PLEX_HOME=${ZFS_DIR}/plex
|
||||
|
||||
sudo docker run --detach \
|
||||
--name plex \
|
||||
--network=host \
|
||||
--env TZ="America/Los_Angles" \
|
||||
--env PLEX_CLAIM="claim-Gh-Gk8R11eNyq7kg4Jxx" \
|
||||
--volume ${PLEX_HOME}/config:/config \
|
||||
--volume ${PLEX_HOME}/transcode:/transcode \
|
||||
--volume ${PLEX_HOME}/data:/data \
|
||||
--restart unless-stopped \
|
||||
plexinc/pms-docker
|
||||
|
||||
echo "Successfully installed Plex"
|
||||
15
portainer/docker-compose.yml
Normal file
15
portainer/docker-compose.yml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
version: '3.6'
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce:latest
|
||||
container_name: portainer
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Los_Angeles
|
||||
volumes:
|
||||
- /data/portainer/config:/config
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- 9000:9000
|
||||
restart: unless-stopped
|
||||
24
pre_setup.sh
Normal file
24
pre_setup.sh
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
|
||||
apt update
|
||||
|
||||
## Setup ZFS
|
||||
ZFS_DIR=/data
|
||||
|
||||
## Debian Setup
|
||||
codename=$(lsb_release -cs);echo "deb http://deb.debian.org/debian $codename-backports main contrib non-free"|sudo tee -a /etc/apt/sources.list
|
||||
apt update
|
||||
apt install dpkg-dev linux-headers-generic linux-image-generic
|
||||
apt install zfs-dkms zfsutils-linux zfs-auto-snapshot
|
||||
|
||||
## Create ZFS Pool
|
||||
mkdir -p ${ZFS_DIR}
|
||||
zpool create -m ${ZFS_DIR} tank raidz <disk1> <disk2> <disk3> ...
|
||||
|
||||
zfs create tank/gitlab
|
||||
zfs create tank/home
|
||||
zfs create tank/jupyter
|
||||
zfs create tank/mineos
|
||||
zfs create tank/netbootxyz
|
||||
zfs create tank/nextcloud
|
||||
zfs create tank/plex
|
||||
3
reverse_proxy.sh
Executable file
3
reverse_proxy.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
deb http://nginx.org/packages/mainline/ubuntu/ CODENAME nginx
|
||||
46
setup.sh
46
setup.sh
|
|
@ -1,46 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
if command -v podman &> /dev/null; then
|
||||
PROG="podman"
|
||||
echo "Podman command exists"
|
||||
elif command -v docker &> /dev/null; then
|
||||
PROG="docker"
|
||||
echo "Docker command exists"
|
||||
else
|
||||
echo "Container command (Docker/Podman) could not be found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d "nginx" ]; then
|
||||
cd nginx
|
||||
echo "Attempting to start nginx container ..."
|
||||
$PROG compose -f docker-compose.yml up -d
|
||||
cd ..
|
||||
else
|
||||
echo "Nginx folder does not exist. You must have an Nginx Proxy Manager instance to continue."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if folder exists
|
||||
if [ -d "forgejo" ]; then
|
||||
cd forgejo
|
||||
echo "Attempting to start forgejo container ..."
|
||||
$PROG compose -f docker-compose.yml up -d
|
||||
cd ..
|
||||
fi
|
||||
|
||||
if [ -d "immich" ]; then
|
||||
cd immich
|
||||
echo "Attempting to start immich container ..."
|
||||
$PROG compose -f docker-compose.yml up -d
|
||||
cd ..
|
||||
fi
|
||||
|
||||
if [ -d "mealie" ]; then
|
||||
cd mealie
|
||||
echo "Attempting to start mealie container ..."
|
||||
$PROG compose -f docker-compose.yml up -d
|
||||
cd ..
|
||||
fi
|
||||
|
||||
echo "Program finished successfully!"
|
||||
82
setup_server.sh
Executable file
82
setup_server.sh
Executable file
|
|
@ -0,0 +1,82 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define admin user account
|
||||
export ADMIN_ACCOUNT=sys-admin
|
||||
|
||||
## Define bulk storage location
|
||||
export ZFS_DIR=/data
|
||||
|
||||
## Check if user is root
|
||||
if [ 'whoami' != 'root' ];then
|
||||
su -
|
||||
fi
|
||||
|
||||
## Ensure HOME directories are stored in ${ZFS_DIR}/home
|
||||
awk '{sub("#HOME=/home","HOME=/home")} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
awk '{sub("# HOME=/home","HOME=/home")} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
awk -v dir=${ZFS_DIR}/home '{sub("HOME=/home","HOME="dir)} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
|
||||
## Install a few helpful packages
|
||||
apt update
|
||||
apt install -y cockpit
|
||||
apt update
|
||||
apt install -y htop nano rsync wget tree
|
||||
|
||||
## Check if administrator account exists
|
||||
if id ${ADMIN_ACCOUNT} &>/dev/null; then
|
||||
echo 'Admin User account found'
|
||||
else
|
||||
## Create and su into sys-admin
|
||||
echo 'Creating Admin User account ...'
|
||||
useradd -m -d ${ZFS_DIR}/home/${ADMIN_ACCOUNT} -G sudo ${ADMIN_ACCOUNT}
|
||||
passwd ${ADMIN_ACCOUNT}
|
||||
# adduser ${ADMIN_ACCOUNT}
|
||||
echo "User account created"
|
||||
fi
|
||||
|
||||
su - ${ADMIN_ACCOUNT}
|
||||
|
||||
echo "Setting up Docker ..."
|
||||
|
||||
## Uninstall old versions
|
||||
sudo apt remove docker docker-engine docker.io containerd runc
|
||||
|
||||
## Set up repository
|
||||
# sudo apt-get remove docker docker-engine docker.io containerd runc
|
||||
sudo apt update
|
||||
sudo apt install -y ca-certificates curl gnupg
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
echo \
|
||||
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||||
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
## Install Docker Engine
|
||||
sudo apt update
|
||||
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
./gitlab_install.sh
|
||||
./jupyterhub_install.sh
|
||||
./mineos_install.sh
|
||||
./netbootxyz_install.sh
|
||||
./nextcloud_install.sh
|
||||
./plex_install.sh
|
||||
|
||||
echo "Setup Complete!"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
###########################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue