Infrastruktur tabung yang dihosting sendiri di Vultr







Tentang apa, mengapa dan mengapa?



Saya memutuskan untuk menulis catatan singkat ini setelah pengalaman saya sendiri dalam menggelar "infrastruktur" pribadi yang terdiri dari beberapa aplikasi untuk urusan sehari-hari.







Di sini saya akan memberi tahu Anda cara menyebarkan layanan untuk mengendalikan keuangan ( FireFly3 ), catatan dan apa yang lebih besar ( BookStack ) dan mengendalikan waktu yang dihabiskan untuk tugas-tugas dalam proyek sumber terbuka atau di tempat kerja ( Titra ) - semua ini di Vultr dengan perlindungan menggunakan grup firewall dan akses hanya dari ip yang diperlukan, misalnya, statika rumah atau vpn (kami akan memperluas Pritunl untuk ini).







Saya memilih Vultr karena saya telah bekerja dengannya untuk waktu yang lama dan sudah tahu apa yang dia bisa dan apa yang tidak - dalam kasus saya, dia datang dengan sempurna.







Semoga ini bermanfaat bagi seseorang.







Menerapkan layanan



Untuk layanan (ketiganya), saya memilih contoh sederhana pada Vultr + pencadangan otomatis, karena semuanya tidak terlalu menuntut sumber daya.













.: , DNS, (certbot), , , personal.io, :)







. 2: β€” docker, , .







β€” FireFly3



Demo







. : , - , - .







FireFly3 , , .. ..













firefly3 , docker, . docker-compose c firefly :







version: '3.3'

services:
  fireflyiii:
    image: jc5x/firefly-iii:latest
    volumes:
      - firefly_iii_upload:/var/www/html/storage/upload
    env_file:
      - .env
    restart: unless-stopped
    ports:
      - 127.0.0.1:34567:8080
    depends_on:
      - fireflyiiidb

  fireflyiiidb:
    image: yobasystems/alpine-mariadb:latest
    restart: unless-stopped
    env_file:
      - .env.db
    volumes:
      - firefly_iii_db:/var/lib/mysql

volumes:
   firefly_iii_upload:
     driver: local
   firefly_iii_db:
     driver: local
      
      





, env- , , : , (SMTP MAILGUN), , (, , eloquent LDAP), , finance.personal.io. env- ( ) pastebin .







firefly3 , nginx proxypass , .







, .. β€” BookStack



Demo







/, - , , BookStack β€” , , markdown ( , ), : --.













, .







docker-compose.yml:







version: "3.1"
services:
  bookstack:
    image: linuxserver/bookstack
    container_name: bookstack
    volumes:
      - bookstack-volume:/config
    ports:
      - 127.0.0.1:34568:80
    env_file: 
      - .env.bookstack
    restart: unless-stopped
    depends_on:
      - bookstack_db

  bookstack_db:
    image: linuxserver/mariadb
    container_name: bookstack_db
    volumes:
      - bookstack-db:/config
    env_file: 
      - .env.db
    restart: unless-stopped

volumes:
  bookstack-volume:
    driver: local
  bookstack-db:
    driver: local
      
      





, firefly, web .







.env.bookstack:







DB_HOST=bookstack_db
DB_USER=bookstack
DB_PASS=bookstackpassword
DB_DATABASE=bookstackapp
APP_URL=https://notes.personal.io
      
      





, admin , .







bookstack LDAP, SAML β€” . pdf html, , .. .







β€” Titra



Demo







, , , . Titra , , (, ), ( ), ..













docker-compose.yml:







version: "3.1"
services:
  titra:
    image: kromit/titra
    container_name: titra
    depends_on:
      - mongodb
    ports:
      - "127.0.0.1:34569:3000"
    env_file:
      - .env.titra
    restart: always

  mongodb:
    image: mongo:4.2
    container_name: mongodb
    restart: always
    volumes:
      - titra_db:/data/db

volumes:
  titra_db:
    driver: local
      
      





.env.titra:







ROOT_URL=https://titra.personal.io
MONGO_URL=mongodb://mongodb/titra
      
      





: β€” Homer



Demo







, , , , . , heimdall homer, , .







Homer , , (, ).













docker-compose.yml:







version: "3.3"
services:
  homer:
    image: b4bz/homer:latest
    volumes:
      - ./assets:/www/assets
    ports:
      - "127.0.0.1:34570:8080"
    restart: unless-stopped

      
      





homer assets config.yml, , .







:







title: "Infrastructure"
subtitle: "Personal"

documentTitle: "Personal/Infrastructure"
icon: "fas fa-skull-crossbones"
header: true

columns: "3"

theme: default

colors:
  dark:
    highlight-primary: "#3367d6"
    highlight-secondary: "#4285f4"
    highlight-hover: "#5a95f5"
    background: "#131313"
    card-background: "#2b2b2b"
    text: "#eaeaea"
    text-header: "#ffffff"
    text-title: "#fafafa"
    text-subtitle: "#f5f5f5"
    card-shadow: rgba(0, 0, 0, 0.4)
    link-hover: "#ffdd57"

services:
  - name: "Main"
    icon: "fas fa-code-branch"
    items:
      - name: "Titra"
        icon: "fas fa-clock"
        subtitle: "time-tracking"
        url: "https://titra.personal.io"

      - name: "FireFly3"
        icon: "fas fa-piggy-bank"
        subtitle: "finance"
        url: "https://finance.personal.io"

      - name: "BookStack"
        icon: "fas fa-book"
        subtitle: "notes-articles-book"
        url: "https://notes.personal.io"
      
      





:













home.personal.io









, nginx certbot. , : apps.conf







nginx:







systemctl start nginx
      
      





, A- DNS , home, notes, finance, titra ip Vultr, certbot Let's Encrypt, :







certbot run --nginx
      
      





, .









, , :







  1. Prtinul
  2. firewall Vultr


, ( 60 ) pritunl vultr .







, firewall vultr ( )















  1. "Add firewall group".







  2. , , , 22 , - VPN. , :















  1. , , .







  2. .










All Articles