diff --git a/dev/host_vars/proxy.yml b/dev/host_vars/proxy.yml index f4bf756..cd2d2c3 100644 --- a/dev/host_vars/proxy.yml +++ b/dev/host_vars/proxy.yml @@ -18,6 +18,8 @@ proxy: proxy_pass: "http://127.0.0.1:8080" - domain: "{{ gitea_domain }}" proxy_pass: "http://127.0.0.1:3000" + - domain: "{{ kutt_domain }}" + proxy_pass: "http://127.0.0.1:3030" # docker docker_users: @@ -35,3 +37,16 @@ bitwarden_install_key: 1yB3Z2gRI0KnnH90C6p gitea_domain: "git.{{ base_domain }}" gitea_version: 1 gitea_dbpass: password + +# kutt +kutt_version: latest +kutt_redis_version: 6 +kutt_postgres_version: 12 +kutt_domain: "kutt.{{ base_domain }}" +kutt_dbpass: password +kutt_jwt_secret: long&random +kutt_mail_user: kutt-noreply@example.com +kutt_mail_host: smtp.example.com +kutt_mail_password: realpassword +kutt_report_email: realemail@example.com +kutt_admin_emails: realemail@example.com diff --git a/dev/proxy.yml b/dev/proxy.yml index b01bc74..0e593ef 100644 --- a/dev/proxy.yml +++ b/dev/proxy.yml @@ -10,3 +10,4 @@ - docker - gitea - bitwarden + - kutt diff --git a/roles/.gitignore b/roles/.gitignore index bb43362..23ca6d6 100644 --- a/roles/.gitignore +++ b/roles/.gitignore @@ -1,11 +1,14 @@ +# Sort roles: tail -n +6 roles/.gitignore | sort /* !.gitignore !requirements.yml +# roles !base*/ !bitwarden*/ !docker*/ !gitea*/ !jenkins*/ +!kutt*/ !libvirt*/ !mariadb*/ !minecraft*/ diff --git a/roles/kutt/defaults/main.yml b/roles/kutt/defaults/main.yml new file mode 100644 index 0000000..b58150e --- /dev/null +++ b/roles/kutt/defaults/main.yml @@ -0,0 +1,16 @@ +# container settings +kutt_name: kutt +kutt_default_domain: "{{ kutt_domain }}" +kutt_webport: 3030 +kutt_web: "127.0.0.1:{{ kutt_webport }}" + +# database settings +kutt_dbname: "{{ kutt_name }}" +kutt_dbuser: "{{ kutt_name }}" +kutt_postgres_volume: postgres_data + +# redis +kutt_redis_volume: redis_data + +# host +kutt_root: "{{ docker_compose_root }}/{{ kutt_name }}" diff --git a/roles/kutt/handlers/main.yml b/roles/kutt/handlers/main.yml new file mode 100644 index 0000000..dcfeaa5 --- /dev/null +++ b/roles/kutt/handlers/main.yml @@ -0,0 +1,5 @@ +- name: Restart Kutt + service: + name: "{{ docker_compose_service }}@{{ kutt_name }}" + state: restarted + listen: restart_kutt diff --git a/roles/kutt/tasks/main.yml b/roles/kutt/tasks/main.yml new file mode 100644 index 0000000..68d3776 --- /dev/null +++ b/roles/kutt/tasks/main.yml @@ -0,0 +1,22 @@ +- name: Create Kutt directory + file: + path: "{{ kutt_root }}" + state: directory + +- name: Install Kutt's docker-compose file + template: + src: docker-compose.yml.j2 + dest: "{{ kutt_root }}/docker-compose.yml" + notify: restart_kutt + +- name: Install Kutt's docker-compose variables + template: + src: compose-env.j2 + dest: "{{ kutt_root }}/.env" + notify: restart_kutt + +- name: Start and enable Gitea service + service: + name: "{{ docker_compose_service }}@{{ kutt_name }}" + state: started + enabled: true diff --git a/roles/kutt/templates/compose-env.j2 b/roles/kutt/templates/compose-env.j2 new file mode 100644 index 0000000..0b07df9 --- /dev/null +++ b/roles/kutt/templates/compose-env.j2 @@ -0,0 +1,17 @@ +# {{ ansible_managed }} +kutt_version={{ kutt_version }} +kutt_web={{ kutt_web }} +kutt_domain={{ kutt_domain }} +kutt_default_domain={{ kutt_default_domain }} +kutt_jwt_secret={{ kutt_jwt_secret }} +kutt_dbname={{ kutt_dbname }} +kutt_dbuser={{ kutt_dbuser }} +kutt_dbpass={{ kutt_dbpass }} +kutt_mail_user={{ kutt_mail_user }} +kutt_mail_host={{ kutt_mail_host }} +kutt_mail_password={{ kutt_mail_password }} +kutt_report_email={{ kutt_report_email }} +kutt_admin_emails={{ kutt_admin_emails }} +kutt_redis_version={{ kutt_redis_version }} +kutt_postgres_version={{ kutt_postgres_version }} +kutt_postgres_volume={{ kutt_postgres_volume }} diff --git a/roles/kutt/templates/docker-compose.yml.j2 b/roles/kutt/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..5fa27e2 --- /dev/null +++ b/roles/kutt/templates/docker-compose.yml.j2 @@ -0,0 +1,46 @@ +version: "3.7" + +services: + kutt: + image: kutt/kutt:${kutt_version} + depends_on: + - postgres + - redis + command: ["./wait-for-it.sh", "postgres:5432", "--", "npm", "start"] + ports: + - ${kutt_web}:3000 + environment: + SITE_NAME: ${kutt_domain} + DEFAULT_DOMAIN: ${kutt_default_domain} + JWT_SECRET: ${kutt_jwt_secret} + + DB_HOST: postgres + DB_NAME: ${kutt_dbname} + DB_USER: ${kutt_dbuser} + DB_PASSWORD: ${kutt_dbpass} + REDIS_HOST: redis + + MAIL_USER: ${kutt_mail_user} + MAIL_HOST: ${kutt_mail_host} + MAIL_PORT: ${kutt_mail_port} + MAIL_PASSWORD: ${kutt_mail_password} + REPORT_EMAIL: ${kutt_report_email} + ADMIN_EMAILS: ${kutt_admin_emails} + + redis: + image: redis:${kutt_redis_version} + volumes: + - {{ kutt_redis_volume }}:/data + + postgres: + image: postgres:${kutt_postgres_version} + environment: + POSTGRES_USER: ${kutt_dbuser} + POSTGRES_PASSWORD: ${kutt_dbpass} + POSTGRES_DB: ${kutt_dbname} + volumes: + - {{ kutt_postgres_volume }}:/var/lib/postgresql/data + +volumes: + {{ kutt_redis_volume }}: + {{ kutt_postgres_volume }}: diff --git a/update-hosts.sh b/update-hosts.sh index 7131117..6b4b0cd 100755 --- a/update-hosts.sh +++ b/update-hosts.sh @@ -14,6 +14,7 @@ HOST[8]="wordpress.${DOMAIN}" HOST[9]="site1.wordpress.${DOMAIN}" HOST[10]="site2.wordpress.${DOMAIN}" HOST[11]="unifi.${DOMAIN}" +HOST[11]="kutt.${DOMAIN}" # Get Vagrantbox guest IP VAGRANT_OUTPUT=$(vagrant ssh -c "hostname -I | cut -d' ' -f2" 2>/dev/null)