diff --git a/apps/haven/config.json b/apps/haven/config.json new file mode 100644 index 00000000..38085bc3 --- /dev/null +++ b/apps/haven/config.json @@ -0,0 +1,37 @@ +{ + "$schema": "../schema.json", + "name": "Haven", + "available": true, + "port": 8130, + "id": "haven", + "exposable": true, + "tipi_version": 1, + "version": "a0280ce", + "categories": ["social"], + "description": "Self-hostable private blogging", + "short_desc": "Self-hostable private blogging", + "author": "mawise", + "source": "https://github.com/havenweb/haven", + "website": "https://havenweb.org/index.html", + "form_fields": [ + { + "type": "text", + "label": "Email", + "required": true, + "env_variable": "HAVEN_USER_EMAIL" + }, + { + "type": "password", + "label": "Haven password", + "max": 50, + "min": 8, + "required": true, + "env_variable": "HAVEN_USER_PASSWORD" + }, + { + "type": "random", + "label": "DB password", + "env_variable": "HAVEN_DB_PASSWORD" + } + ] +} diff --git a/apps/haven/docker-compose.yml b/apps/haven/docker-compose.yml new file mode 100644 index 00000000..ce2b07ee --- /dev/null +++ b/apps/haven/docker-compose.yml @@ -0,0 +1,49 @@ +version: '3.7' +services: + haven: + image: ghcr.io/havenweb/haven:a0280ce + container_name: haven + depends_on: + - haven-db + ports: + - ${APP_PORT}:3000 + volumes: + - ${APP_DATA_DIR}/data/storage:/storage + environment: + - RAILS_ENV=production + - HAVEN_DB_HOST=haven-db + - HAVEN_DB_NAME=haven + - HAVEN_DB_ROLE=haven + - HAVEN_DB_PASSWORD=${HAVEN_DB_PASSWORD} + - HAVEN_USER_EMAIL=${HAVEN_USER_EMAIL} + - HAVEN_USER_PASS=${HAVEN_USER_PASSWORD} + networks: + - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.haven.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.haven.entrypoints: websecure + traefik.http.routers.haven.service: haven + traefik.http.routers.haven.tls.certresolver: myresolver + traefik.http.services.haven.loadbalancer.server.port: 3000 + + haven-db: + image: postgres:13.2-alpine + container_name: haven-db + command: [ + "postgres", + "-c", "max_connections=1000", + "-c", "synchronous_commit=off", + "-c", "fsync=off", + "-c", "full_page_writes=off", + "-c", "max_wal_size=4GB", + "-c", "checkpoint_timeout=30min", + "-c", "wal_level=logical" + ] + environment: + POSTGRES_HOST_AUTH_METHOD: trust + POSTGRES_USER: haven + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + networks: + - tipi_main_network diff --git a/apps/haven/metadata/description.md b/apps/haven/metadata/description.md new file mode 100644 index 00000000..6eb89053 --- /dev/null +++ b/apps/haven/metadata/description.md @@ -0,0 +1,15 @@ +[Haven](https://havenweb.org) is a private blog application built with Ruby on Rails. Write what you want, create accounts for people you want to share with, keep up with each other using built-in RSS. + +Try out a live demo at https://havenweb.org/demo.html + +The following are some motivating philosophies: + +* Open-source. MIT License +* Privacy-first. This is for sharing with friends and family, not commercial endevors. If you want a blog for your company, you probably want to use WordPress or Ghost instead. +* Easy to use. Built-in web interface for managing users, customizing the blog, and writing/editing posts with markdown and live-preview. +* Low-bandwidth friendly. Images get downscaled to reduce page load times. No javascript frameworks. No ads or trackers. +* Customizable. Add custom CSS or fonts. +* No spam. There is no self-signup for users so there is no place for unauthorized users to impact your life. +* Media support for images, videos, and audio. +* Private RSS feeds for your friends to follow you. +* Build-in RSS reader to follow your favorite blogs. \ No newline at end of file diff --git a/apps/haven/metadata/logo.jpg b/apps/haven/metadata/logo.jpg new file mode 100644 index 00000000..91e7139b Binary files /dev/null and b/apps/haven/metadata/logo.jpg differ