made a lot of changes to accomodate running the same app for differnt projects.

This commit is contained in:
2020-04-24 10:43:33 -07:00
parent 206ed58eb9
commit 27e3c4e614
36 changed files with 897 additions and 121 deletions
+9 -9
View File
@@ -17,9 +17,9 @@ volumes:
bookstack-storage: bookstack-storage:
networks: networks:
traefik_web: admin_web:
external: external:
name: ${NETWORK_NAME} name: admin_web
services: services:
@@ -29,11 +29,11 @@ services:
volumes: volumes:
- bookstack-db:/var/lib/mysql - bookstack-db:/var/lib/mysql
networks: networks:
- ${NETWORK_NAME} - admin_web
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${BOOKSTACK_MYSQL_ROOT_PASSWORD}
MYSQL_USER: bookstack MYSQL_USER: bookstack
MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_PASSWORD: ${BOOKSTACK_MYSQL_PASSWORD}
MYSQL_DATABASE: bookstack MYSQL_DATABASE: bookstack
# https://hub.docker.com/r/solidnerd/bookstack # https://hub.docker.com/r/solidnerd/bookstack
@@ -45,16 +45,16 @@ services:
- DB_HOST=${PREFIX}_bookstack-db_1:3306 - DB_HOST=${PREFIX}_bookstack-db_1:3306
- DB_DATABASE=bookstack - DB_DATABASE=bookstack
- DB_USERNAME=bookstack - DB_USERNAME=bookstack
- DB_PASSWORD=${MYSQL_PASSWORD} - DB_PASSWORD=${BOOKSTACK_MYSQL_PASSWORD}
- APP_URL=https://${DOMAIN_NAME} - APP_URL=https://${BOOKSTACK_DOMAIN_NAME}
networks: networks:
- ${NETWORK_NAME} - admin_web
volumes: volumes:
- bookstack-uploads:/var/www/bookstack/public/uploads - bookstack-uploads:/var/www/bookstack/public/uploads
- bookstack-storage:/var/www/bookstack/storage/uploads - bookstack-storage:/var/www/bookstack/storage/uploads
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_bookstack.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.${PREFIX}_bookstack.rule=Host(`${BOOKSTACK_DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_bookstack.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_bookstack.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_bookstack.tls=true" - "traefik.http.routers.${PREFIX}_bookstack.tls=true"
- "traefik.http.services.${PREFIX}_bookstack.loadbalancer.server.port=8080" - "traefik.http.services.${PREFIX}_bookstack.loadbalancer.server.port=8080"
+3 -6
View File
@@ -1,14 +1,11 @@
# Domains & Project # Domains & Project
PREFIX=p1 PREFIX=p1
DOMAIN_NAME=bookstack.nickyeoman.com BOOKSTACK_DOMAIN_NAME=bookstack.nickyeoman.com
# Passwords # Passwords
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass! BOOKSTACK_MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
MYSQL_PASSWORD=Again2ASecurepass! BOOKSTACK_MYSQL_PASSWORD=Again2ASecurepass!
# Software versions # Software versions
DB_V=10.4.11 DB_V=10.4.11
BOOKSTACK_V=0.29.0 BOOKSTACK_V=0.29.0
# Network
NETWORK_NAME=traefik_web
+1
View File
@@ -0,0 +1 @@
# https://hub.docker.com/r/emby/embyserver
+22 -4
View File
@@ -13,22 +13,40 @@ version: '3.3'
volumes: volumes:
gitea: gitea:
gitea-db:
networks: networks:
traefik_web: admin_web:
external: external:
name: ${NETWORK_NAME} name: admin_web
services: services:
gitea-db:
image: mariadb:${DB_V}
restart: always
volumes:
- gitea-db:/var/lib/mysql
networks:
- admin_web
environment:
MYSQL_ROOT_PASSWORD: ${GITEA_MYSQL_ROOT_PASSWORD}
MYSQL_USER: gitea
MYSQL_PASSWORD: ${GITEA_MYSQL_PASSWORD}
MYSQL_DATABASE: gitea
gitea: gitea:
# https://hub.docker.com/r/gitea/gitea # https://hub.docker.com/r/gitea/gitea
image: gitea/gitea:${GITEA_V} image: gitea/gitea:${GITEA_V}
networks: networks:
- ${NETWORK_NAME} - admin_web
environment: environment:
- USER_UID=1000 - USER_UID=1000
- USER_GID=1000 - USER_GID=1000
- DB_TYPE=mysql
- DB_HOST=${PREFIX}_gitea-db:3306
- DB_NAME=gitea
- DB_USER=gitea
restart: always restart: always
volumes: volumes:
- gitea:/data - gitea:/data
@@ -38,7 +56,7 @@ services:
- "${GITEA_PORT}:22" - "${GITEA_PORT}:22"
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_gitea.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.${PREFIX}_gitea.rule=Host(`${GITEA_DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_gitea.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_gitea.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_gitea.tls=true" - "traefik.http.routers.${PREFIX}_gitea.tls=true"
- "traefik.http.services.${PREFIX}_gitea.loadbalancer.server.port=3000" - "traefik.http.services.${PREFIX}_gitea.loadbalancer.server.port=3000"
+4 -3
View File
@@ -1,10 +1,11 @@
# Domains & Project # Domains & Project
PREFIX=p1 PREFIX=p1
DOMAIN_NAME=gitea.nickyeoman.com GITEA_DOMAIN_NAME=gitea.nickyeoman.com
# Software versions # Software versions
GITEA_V=1.11.4 GITEA_V=1.11.4
GITEA_PORT=22 GITEA_PORT=22
# Network #passwords
NETWORK_NAME=traefik_web GITEA_MYSQL_ROOT_PASSWORD=changeMe
GITEA_MYSQL_PASSWORD=changemeAlso
+17
View File
@@ -0,0 +1,17 @@
# https://hub.docker.com/r/linuxserver/heimdall
---
version: "2.1"
services:
heimdall:
image: linuxserver/heimdall
container_name: heimdall
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- /path/to/appdata/config:/config
ports:
- 80:80
- 443:443
restart: unless-stopped
-14
View File
@@ -1,14 +0,0 @@
# Domains & Project
PREFIX=p1
DOMAIN_NAME=joomla.nickyeoman.com
# PASSWORDS
MYSQL_PASSWORD=MyNotSecurePassword1234
MYSQL_ROOT_PASSWORD=AlsoNotSecure
# Software versions
JOOMLA_V=3.9.16-apache
JOOMLADB_V=10.4.11
# Network
NETWORK_NAME=traefik_web
+21
View File
@@ -0,0 +1,21 @@
<VirtualHost *:80>
ServerName docker
ServerAdmin c@nickyeoman.com
DocumentRoot /var/www/html
#ErrorLog /var/log/apache2/error.log
#CustomLog /var/log/apache2/access.log combined
# You need to use x-forward
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "/var/log/apache2/access.log" combined env=!forwarded
CustomLog "/var/log/apache2/access.log" proxy env=forwarded
<Directory /var/www/html>
Options +Indexes +FollowSymLinks -MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
+185
View File
@@ -0,0 +1,185 @@
[PHP]
; Nick Yeoman made this for bionic
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;
engine = On
short_open_tag = Off
precision = 14
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
disable_classes =
zend.enable_gc = On
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;
expose_php = Off
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30
max_input_time = 60
memory_limit = 512M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 99M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
doc_root =
user_dir =
enable_dl = Off
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On
upload_max_filesize = 99M
max_file_uploads = 20
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[CLI Server]
cli_server.color = On
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[bcmath]
bcmath.scale = 0
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[Assertion]
zend.assertions = -1
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[ldap]
ldap.max_links = -1
@@ -1,8 +1,6 @@
################################################################################ ################################################################################
# Joomla # Joomla
# Update the .env file # Update the .env file
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
# #
# Version 1 # Version 1
################################################################################ ################################################################################
@@ -13,37 +11,43 @@ volumes:
joomla: joomla:
networks: networks:
traefik_web: admin_web:
external: external:
name: ${NETWORK_NAME} name: admin_web
services: services:
mariadb: mariadb:
image: mariadb:${JOOMLADB_V} image: mariadb:${LAMPDB_V}
restart: always restart: always
volumes: volumes:
- mariadb:/var/lib/mysql - mariadb:/var/lib/mysql
networks: networks:
- ${NETWORK_NAME} - admin_web
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: joomla MYSQL_USER: joomla
MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: joomla MYSQL_DATABASE: joomla
joomla: memcached:
image: joomla:${JOOMLA_V} image: memcached:${MEM_V}
restart: always
networks:
- admin_web
lamp:
image: nick/lamp
restart: always restart: always
links: links:
- ${PREFIX}_mariadb_1 - mariadb
networks: networks:
- ${NETWORK_NAME} - admin_web
volumes: volumes:
- joomla:/var/www/html - joomla:/var/www/html
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_joomla.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.${PREFIX}_lamp.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_joomla.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_lamp.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_joomla.tls=true" - "traefik.http.routers.${PREFIX}_lamp.tls=true"
- "traefik.http.services.${PREFIX}_joomla.loadbalancer.server.port=80" - "traefik.http.services.${PREFIX}_lamp.loadbalancer.server.port=80"
+47
View File
@@ -0,0 +1,47 @@
# BUILD ME:
# docker build -t nick/lamp .
# Dockerfile for ubuntu
FROM ubuntu:bionic
MAINTAINER Nick Yeoman (c@nickyeoman.com)
ENV DEBIAN_FRONTEND noninteractive
# install apache
RUN apt-get update
RUN apt-get install -y --no-install-recommends apache2
RUN a2enmod socache_shmcb ssl expires rewrite headers
#Install php
# each individually makes debuging easier
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q php
RUN apt-get install -y php-imagick
RUN apt-get install -y php-gd php-curl
RUN apt-get install -y php-intl
RUN apt-get install -y php-json
RUN apt-get install -y php-memcache
RUN apt-get install -y php-mbstring
RUN apt-get install -y libapache2-mod-php7.2
RUN apt-get install -y php7.2-xml
RUN apt-get install -y php7.2-zip
RUN apt-get install -y php7.2-mbstring
RUN apt-get install -y php7.2-mysql
COPY config/php.ini /etc/php/7.2/apache2/php.ini
#Configure apache
RUN servername="ServerName docker.fbot.co"
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN rm /etc/apache2/sites-available/000-default.conf
COPY config/000-default.conf /etc/apache2/sites-available/000-default.conf
# Cleanup: remove lists
RUN rm -r /var/lib/apt/lists/*
# Default command
CMD ["apachectl", "-D", "FOREGROUND"]
# Ports
EXPOSE 80
+15
View File
@@ -0,0 +1,15 @@
# docker-compose -p <PREFIX> up -d
# Domains & Project
PREFIX=p1
DOMAIN_NAME=p1.nickyeoman.com
# PASSWORDS
MYSQL_PASSWORD=8YDmMw4ePRvBc2Z2
MYSQL_ROOT_PASSWORD=5XLvbJ76r3yKREw8
# Software versions
# https://hub.docker.com/_/mariadb
LAMPDB_V=10.4.12
# https://hub.docker.com/_/memcached/
MEM_V=1.6.5
+21
View File
@@ -0,0 +1,21 @@
<VirtualHost *:80>
ServerName docker
ServerAdmin c@nickyeoman.com
DocumentRoot /var/www/html
#ErrorLog /var/log/apache2/error.log
#CustomLog /var/log/apache2/access.log combined
# You need to use x-forward
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "/var/log/apache2/access.log" combined env=!forwarded
CustomLog "/var/log/apache2/access.log" proxy env=forwarded
<Directory /var/www/html>
Options +Indexes +FollowSymLinks -MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
+185
View File
@@ -0,0 +1,185 @@
[PHP]
; Nick Yeoman made this for bionic
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;
engine = On
short_open_tag = Off
precision = 14
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
disable_classes =
zend.enable_gc = On
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;
expose_php = Off
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30
max_input_time = 60
memory_limit = 512M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 99M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
doc_root =
user_dir =
enable_dl = Off
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On
upload_max_filesize = 99M
max_file_uploads = 20
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[CLI Server]
cli_server.color = On
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[bcmath]
bcmath.scale = 0
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[Assertion]
zend.assertions = -1
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[ldap]
ldap.max_links = -1
+31
View File
@@ -0,0 +1,31 @@
################################################################################
# Joomla
# Update the .env file
#
# Version 1
################################################################################
version: '3.3'
volumes:
lap:
networks:
admin_web:
external:
name: admin_web
services:
lap:
image: nick/lamp
restart: always
networks:
- admin_web
volumes:
- lap:/var/www/html
labels:
- "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_lap.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_lap.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_lap.tls=true"
- "traefik.http.services.${PREFIX}_lap.loadbalancer.server.port=80"
+47
View File
@@ -0,0 +1,47 @@
# BUILD ME:
# docker build -t nick/lamp .
# Dockerfile for ubuntu
FROM ubuntu:bionic
MAINTAINER Nick Yeoman (c@nickyeoman.com)
ENV DEBIAN_FRONTEND noninteractive
# install apache
RUN apt-get update
RUN apt-get install -y --no-install-recommends apache2
RUN a2enmod socache_shmcb ssl expires rewrite headers
#Install php
# each individually makes debuging easier
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q php
RUN apt-get install -y php-imagick
RUN apt-get install -y php-gd php-curl
RUN apt-get install -y php-intl
RUN apt-get install -y php-json
RUN apt-get install -y php-memcache
RUN apt-get install -y php-mbstring
RUN apt-get install -y libapache2-mod-php7.2
RUN apt-get install -y php7.2-xml
RUN apt-get install -y php7.2-zip
RUN apt-get install -y php7.2-mbstring
RUN apt-get install -y php7.2-mysql
COPY config/php.ini /etc/php/7.2/apache2/php.ini
#Configure apache
RUN servername="ServerName docker.fbot.co"
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN rm /etc/apache2/sites-available/000-default.conf
COPY config/000-default.conf /etc/apache2/sites-available/000-default.conf
# Cleanup: remove lists
RUN rm -r /var/lib/apt/lists/*
# Default command
CMD ["apachectl", "-D", "FOREGROUND"]
# Ports
EXPOSE 80
+5
View File
@@ -0,0 +1,5 @@
# docker-compose -p <PREFIX> up -d
# Domains & Project
PREFIX=p1
DOMAIN_NAME=p1.nickyeoman.com
+8
View File
@@ -0,0 +1,8 @@
version: '3'
services:
# https://hub.docker.com/r/mailtrain/mailtrain
mailtrain:
environment:
- URL_BASE_TRUSTED
- URL_BASE_SANDBOX
- URL_BASE_PUBLIC
+12 -18
View File
@@ -1,54 +1,48 @@
################################################################################ ################################################################################
# Nextcloud # Nextcloud
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
# #
# Version 1 # Version 1
################################################################################ ################################################################################
version: '3.3' version: '3.3'
volumes: volumes:
mariadb: nextcloud-db:
nextcloud: nextcloud:
document_data:
document_log:
networks: networks:
traefik_web: admin_web:
external: external:
name: ${NETWORK_NAME} name: admin_web
services: services:
mariadb: nextcloud-db:
image: mariadb:${DB_V} image: mariadb:${DB_V}
restart: always restart: always
volumes: volumes:
- mariadb:/var/lib/mysql - nextcloud-db:/var/lib/mysql
networks: networks:
- ${NETWORK_NAME} - admin_web
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${NEXTCLOUD_MYSQL_ROOT_PASSWORD}
MYSQL_USER: nextcloud MYSQL_USER: nextcloud
MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_PASSWORD: ${NEXTCLOUD_MYSQL_PASSWORD}
MYSQL_DATABASE: nextcloud MYSQL_DATABASE: db_nextcloud
nextcloud: nextcloud:
image: nextcloud:${NEXTCLOUD_V} image: nextcloud:${NEXTCLOUD_V}
stdin_open: true stdin_open: true
tty: true tty: true
networks: networks:
- ${NETWORK_NAME} - admin_web
restart: always restart: always
depends_on:
- ${PREFIX}_mariadb_1
links: links:
- ${PREFIX}_mariadb_1 - nextcloud-db
volumes: volumes:
- nextcloud:/var/www/html - nextcloud:/var/www/html
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_nextcloud.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.${PREFIX}_nextcloud.rule=Host(`${NEXTCLOUD_DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_nextcloud.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_nextcloud.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_nextcloud.tls=true" - "traefik.http.routers.${PREFIX}_nextcloud.tls=true"
- "traefik.http.services.${PREFIX}_nextcloud.loadbalancer.server.port=80" - "traefik.http.services.${PREFIX}_nextcloud.loadbalancer.server.port=80"
+3 -7
View File
@@ -1,15 +1,11 @@
# Domains & Project # Domains & Project
PREFIX=p1 PREFIX=p1
DOMAIN_NAME=nextcloud.nickyeoman.com NEXTCLOUD_DOMAIN_NAME=nextcloud.nickyeoman.com
PHPDB_DOMAIN_NAME=bookstack-db.nickyeoman.com
# Passwords # Passwords
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass! NEXTCLOUD_MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
MYSQL_PASSWORD=Again2ASecurepass! NEXTCLOUD_MYSQL_PASSWORD=Again2ASecurepass!
# Software versions # Software versions
DB_V=10.4.11 DB_V=10.4.11
NEXTCLOUD_V=18.0.3-apache NEXTCLOUD_V=18.0.3-apache
# Network
NETWORK_NAME=traefik_web
+19
View File
@@ -0,0 +1,19 @@
#https://hub.docker.com/_/odoo
version: '2'
services:
web:
image: odoo:12.0
depends_on:
- mydb
ports:
- "8069:8069"
environment:
- HOST=mydb
- USER=odoo
- PASSWORD=myodoo
mydb:
image: postgres:10
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=myodoo
- POSTGRES_USER=odoo
+5 -4
View File
@@ -8,9 +8,9 @@
version: '2' version: '2'
networks: networks:
traefik_web: admin_web:
external: external:
name: ${NETWORK_NAME} name: admin_web
services: services:
@@ -20,12 +20,13 @@ services:
image: phpmyadmin/phpmyadmin:${PHPMYADMIN_V} image: phpmyadmin/phpmyadmin:${PHPMYADMIN_V}
environment: environment:
- PMA_ARBITRARY=1 - PMA_ARBITRARY=1
- UPLOAD_LIMIT=200M
restart: unless-stopped restart: unless-stopped
networks: networks:
- ${NETWORK_NAME} - admin_web
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_phpmyadmin.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.${PREFIX}_phpmyadmin.rule=Host(`${PHPMYADMIN_DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_phpmyadmin.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_phpmyadmin.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_phpmyadmin.tls=true" - "traefik.http.routers.${PREFIX}_phpmyadmin.tls=true"
- "traefik.http.services.${PREFIX}_phpmyadmin.loadbalancer.server.port=80" - "traefik.http.services.${PREFIX}_phpmyadmin.loadbalancer.server.port=80"
+1 -4
View File
@@ -1,9 +1,6 @@
# Domains & Project # Domains & Project
PREFIX=p1 PREFIX=p1
DOMAIN_NAME=phpmyadmin.nickyeoman.com PHPMYADMIN_DOMAIN_NAME=phpmyadmin.nickyeoman.com
# Software versions # Software versions
PHPMYADMIN_V=5.0 PHPMYADMIN_V=5.0
# Network
NETWORK_NAME=traefik_web
+4 -7
View File
@@ -13,28 +13,25 @@ volumes:
portainer: portainer:
networks: networks:
traefik_web: admin_web:
external: external:
name: ${NETWORK_NAME} name: admin_web
services: services:
portainer: portainer:
# https://hub.docker.com/r/portainer/portainer
image: portainer/portainer:${PORTAINER_V} image: portainer/portainer:${PORTAINER_V}
container_name: portainer
hostname: portainer
command: -H unix:///var/run/docker.sock command: -H unix:///var/run/docker.sock
restart: unless-stopped restart: unless-stopped
networks: networks:
- ${NETWORK_NAME} - admin_web
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- portainer:/data - portainer:/data
command: -H unix:///var/run/docker.sock command: -H unix:///var/run/docker.sock
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.portainer.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.portainer.rule=Host(`${PORTAINER_DOMAIN_NAME}`)"
- "traefik.http.routers.portainer.entrypoints=websecure" - "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.tls=true" - "traefik.http.routers.portainer.tls=true"
- "traefik.http.services.portainer.loadbalancer.server.port=9000" - "traefik.http.services.portainer.loadbalancer.server.port=9000"
+3 -4
View File
@@ -1,8 +1,7 @@
# Domains & Project # Domains & Project
DOMAIN_NAME=passbolt.nickyeoman.com PORTAINER_DOMAIN_NAME=portainer.nickyeoman.com
# Software versions # Software versions
PORTAINER_V=1.23.2
# Network # https://hub.docker.com/r/portainer/portainer
NETWORK_NAME=traefik_web PORTAINER_V=1.23.2
+1
View File
@@ -0,0 +1 @@
# https://hub.docker.com/r/opensuse/portus/
+1
View File
@@ -0,0 +1 @@
# https://hub.docker.com/_/silverpeas
+76
View File
@@ -0,0 +1,76 @@
#!/bin/#!/usr/bin/env bash
#Variables
path="${PWD}/static/videos"
path_content="${PWD}/content/blog"
dt=`date +'%Y-%m-%d'`
#setup
mkdir ${path}/meta
#get filename var
for i in $(ls $path/*mp4);
do
# filename with no ext
filename="${i##*/}"
filename="${filename%.mp4}"
# Get the resolution
res=`ffmpeg -i $i 2>&1 | grep Stream | grep -oP ', \K[0-9]+x[0-9]+'`;
name=`echo $i | sed 's/\(.*\)\..*/\1/'`; #remove extension
echo "res: $res"
#Get the number of frames
#frames=`ffprobe -v error -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 $i`
#half frames
#z=$(($frames / 2))
#Create thumb
#ffmpeg -i $i -y -vf scale=300:-1,"select=gte(n\,${z})" -vframes 1 ${path}/thumbs/${filename}.png
#create a gif
ffmpeg -i $i -y -r 15 -vf scale=300:-1 -ss 00:00:03 -to 00:00:06 ${path}/thumbs/${filename}.gif
# get metadata
ffmpeg -i $i -y -f ffmetadata ${path}/meta/${filename}.txt
#title
title=`grep title ${path}/meta/${filename}.txt`
title=${title##*=}
#alias/slug
alias=${title// /_}
alias=${alias,,}
#artist
artist=`grep title ${path}/meta/${filename}.txt`
#tags
echo "tags:" > ${path}/meta/${filename}-tags.txt
tags=`grep genre ${path}/meta/${filename}.txt`
tags=${tags##*=}
for value in $tags
do
#Work here
echo " - $value" >> ${path}/meta/${filename}-tags.txt
done
tags=`cat ${path}/meta/${filename}-tags.txt`
# create or replace file
cat << EOF > ${path_content}/${filename}-${alias}.md
---
title: "${filename} - ${title}"
cover: "${filename}"
date: "${dt}"
description: "Here is video${filename} which is ${res} and starting ${artist}"
${tags}
---
Here is video${filename} which is ${res} and starting ${artist}.
{{< vids "${filename}" >}}
EOF
done;
rm -rf ${path}/meta
+15
View File
@@ -0,0 +1,15 @@
FROM openjdk:8-jre-slim
WORKDIR /app/streama
RUN apt-get -y update && \
apt-get -y install curl && \
apt-get -y clean && \
apt-get -y autoremove && \
URL_DOWNLOAD_LATEST_RELEASE=$(curl -L https://api.github.com/repos/streamaserver/streama/releases | grep -i browser_download_url | head -n 1 | cut -d '"' -f 4) && \
curl -o streama.jar -L $URL_DOWNLOAD_LATEST_RELEASE && \
chmod u+x streama.jar
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "streama.jar" ]
+60
View File
@@ -0,0 +1,60 @@
version: "3"
services:
mysql:
image: mysql:5.7
restart: always
container_name: mysql
hostname: mysql
networks:
- traefik_web
expose:
- 3306
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: streama_root_password
MYSQL_USER: streama
MYSQL_DATABASE: streama
MYSQL_PASSWORD: streama_password
streama:
image: streama
build: .
restart: always
container_name: streama
hostname: streama
depends_on:
- mysql
networks:
- traefik_web
expose:
- 8080
volumes:
- movies:/data/streama # Change to your video folder
- app_data:/app/streama
environment:
ACTIVE_PROFILE: mysql
MYSQL_HOST: mysql
MYSQL_PORT: 3306
MYSQL_DB: streama
MYSQL_USER: streama
MYSQL_PASSWORD: streama_password
labels:
- "traefik.enable=true"
- "traefik.http.routers.nixflix.rule=Host(`nixflix.com`)"
- "traefik.http.routers.nixflix.entrypoints=websecure"
- "traefik.http.routers.nixflix.tls=true"
- "traefik.http.services.nixflix.loadbalancer.server.port=8080"
networks:
traefik_web:
external:
name: traefik_web
volumes:
db_data:
app_data:
proxy_reverse_data:
proxy_reverse_data_log:
movies:
+3
View File
@@ -0,0 +1,3 @@
FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
+35
View File
@@ -0,0 +1,35 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events { worker_connections 512; }
http {
sendfile on;
server {
listen 80;
listen [::]:80;
client_max_body_size 128g; # allows larger files (like videos) to be uploaded.
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#WebSocket Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_pass http://streama:8080;
}
}
}
+4 -5
View File
@@ -8,7 +8,7 @@
version: '3.3' version: '3.3'
networks: networks:
${NETWORK_NAME}: web:
driver: bridge driver: bridge
services: services:
@@ -16,7 +16,6 @@ services:
traefik: traefik:
# https://hub.docker.com/_/traefik # https://hub.docker.com/_/traefik
image: "traefik:${TRAEFIK_V}" image: "traefik:${TRAEFIK_V}"
container_name: "traefik"
restart: unless-stopped restart: unless-stopped
command: command:
- --entrypoints.web.address=:80 - --entrypoints.web.address=:80
@@ -29,15 +28,15 @@ services:
volumes: volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro"
networks: networks:
- ${NETWORK_NAME} - web
labels: labels:
# Dashboard # Dashboard
- "traefik.http.routers.traefik.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_DOMAIN_NAME}`)"
- "traefik.http.routers.traefik.service=api@internal" - "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls.certresolver=leresolver" - "traefik.http.routers.traefik.tls.certresolver=leresolver"
- "traefik.http.routers.traefik.entrypoints=websecure" - "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.middlewares=authtraefik" - "traefik.http.routers.traefik.middlewares=authtraefik"
- "traefik.http.middlewares.authtraefik.basicauth.users=${TRAEFIK_USER}:${TRAEFIK_PASS}" - "traefik.http.middlewares.authtraefik.basicauth.users=<USER>:<PASSWORD>"
# global redirect to https # global redirect to https
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)" - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web" - "traefik.http.routers.http-catchall.entrypoints=web"
+1 -4
View File
@@ -1,6 +1,6 @@
# Domains & Project # Domains & Project
PREFIX=p1 PREFIX=p1
DOMAIN_NAME=traefik.nickyeoman.com TRAEFIK_DOMAIN_NAME=traefik.nickyeoman.com
# Passwords # Passwords
# https://medium.com/@techupbusiness/add-basic-authentication-in-docker-compose-files-with-traefik-34c781234970 # https://medium.com/@techupbusiness/add-basic-authentication-in-docker-compose-files-with-traefik-34c781234970
@@ -11,6 +11,3 @@ TRAEFIK_PASS=M@keASecureOne
# Software versions # Software versions
# https://hub.docker.com/_/traefik # https://hub.docker.com/_/traefik
TRAEFIK_V=2.2.0 TRAEFIK_V=2.2.0
# Network
NETWORK_NAME=traefik_web
+12 -12
View File
@@ -13,9 +13,9 @@ volumes:
yourls-db: yourls-db:
networks: networks:
traefik_web: admin_web:
external: external:
name: ${NETWORK_NAME} name: admin_web
services: services:
@@ -24,13 +24,13 @@ services:
image: mariadb:${DB_V} image: mariadb:${DB_V}
restart: always restart: always
volumes: volumes:
- yourls-mariadb:/var/lib/mysql - yourls-db:/var/lib/mysql
networks: networks:
- ${NETWORK_NAME} - admin_web
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${YOURLS_MYSQL_ROOT_PASSWORD}
MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_PASSWORD: ${YOURLS_MYSQL_PASSWORD}
MYSQL_DATABASE: yourls MYSQL_DATABASE: db_yourls
MYSQL_USER: yourls MYSQL_USER: yourls
yourls: yourls:
@@ -40,18 +40,18 @@ services:
volumes: volumes:
- yourls:/var/www/html - yourls:/var/www/html
networks: networks:
- ${NETWORK_NAME} - admin_web
environment: environment:
YOURLS_DB_HOST: ${PREFIX}_yourls-db_1 YOURLS_DB_HOST: ${PREFIX}_yourls-db_1
YOURLS_DB_USER: yourls YOURLS_DB_USER: yourls
YOURLS_DB_PASS: ${MYSQL_PASSWORD} YOURLS_DB_PASS: ${YOURLS_MYSQL_PASSWORD}
YOURLS_DB_NAME: yourls YOURLS_DB_NAME: db_yourls
YOURLS_SITE: https://${DOMAIN_NAME} YOURLS_SITE: https://${YOURLS_DOMAIN_NAME}
YOURLS_USER: ${YOURLS_USER} YOURLS_USER: ${YOURLS_USER}
YOURLS_PASS: ${YOURLS_PASS} YOURLS_PASS: ${YOURLS_PASS}
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_yourls.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.${PREFIX}_yourls.rule=Host(`${YOURLS_DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_yourls.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_yourls.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_yourls.tls=true" - "traefik.http.routers.${PREFIX}_yourls.tls=true"
- "traefik.http.services.${PREFIX}_yourls.loadbalancer.server.port=80" - "traefik.http.services.${PREFIX}_yourls.loadbalancer.server.port=80"
+3 -6
View File
@@ -1,15 +1,12 @@
# Domains & Project # Domains & Project
PREFIX=p1 PREFIX=p1
DOMAIN_NAME=yourls.nickyeoman.com YOURLS_DOMAIN_NAME=yourls.nickyeoman.com
# Passwords # Passwords
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass! YOURLS_MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
MYSQL_PASSWORD=Again2ASecurepass! YOURLS_MYSQL_PASSWORD=Again2ASecurepass!
YOURLS_USER=username YOURLS_USER=username
YOURLS_PASS=Password4urls YOURLS_PASS=Password4urls
# Software versions # Software versions
DB_V=10.4.11 DB_V=10.4.11
# Network
NETWORK_NAME=traefik_web