LINUXSELF HOSTING

Hướng dẫn tự cài đặt Postiz trên Ubuntu (trên Proxmox VE)

Bài viết này sẽ hướng dẫn chi tiết về cách self-hosted Postiz, một nền tảng mã nguồn mở để quản lý tất cả tài khoản mạng xã hội. Nó bao gồm việc cài đặt trên nhiều cấu hình khác nhau và làm rõ các chi tiết kỹ thuật. Bạn cũng có thể tham khảo cách cài đặt bằng video này:

Postiz là gì?

Postiz là một ứng dụng mã nguồn mở, cho phép bạn quản lý tất cả các tài khoản mạng xã hội của mình từ một nền tảng duy nhất. Với Postiz, bạn có thể:

  • Lên lịch đăng bài trên nhiều mạng xã hội khác nhau.
  • Tạo nội dung bài viết bằng công nghệ AI.
  • Trao đổi hoặc mua bài viết từ cộng đồng người dùng trên marketplace.
  • Phân tích hiệu quả của các bài đăng trên mạng xã hội.
  • Cộng tác với các thành viên trong nhóm để quản lý các kênh truyền thông.

Các tùy chọn self-host

  • Self-Host (Single Computer): Thiết lập này liên quan đến một máy tính chuyên dụng chạy Postiz. Bạn đăng nhập vào máy tính này để quản lý các bài đăng trên mạng xã hội của mình. Việc cài đặt Postiz trên Ubuntu Desktop là lý tưởng, vì nó cung cấp GUI và các công cụ năng suất có lợi cho việc quản lý mạng xã hội.
  • Self-Host (Local LAN): Trong thiết lập này, một máy chủ trên mạng của bạn sẽ host giải pháp Postiz. Các máy tính khác trên cùng một mạng có thể truy cập Postiz thông qua trình duyệt web. Mặc dù cả hai phiên bản Ubuntu Desktop và Server đều tương thích, nhưng phiên bản Server được khuyến nghị do yêu cầu tài nguyên thấp hơn. Hướng dẫn này sẽ đề cập đến tùy chọn này và sẽ cài đặt Server dưới dạng VM trên Proxmox.
  • Self-Host (Public): Tùy chọn này tương tự như Local LAN, nhưng có tên miền đã đăng ký, cho phép truy cập từ bất kỳ thiết bị nào có kết nối internet. Sự khác biệt chính nằm ở việc định cấu hình bộ định tuyến (tường lửa và các điều chỉnh định tuyến) để xử lý lưu lượng HTTPS được chuyển đến port 5000 của máy chủ Postiz.
  • Self-Host Enterprise: Thiết lập này phục vụ cho các hoạt động quy mô lớn với nhiều người dùng và lưu lượng truy cập cao. Trong trường hợp này, các container Docker khác nhau tạo nên Postiz được cài đặt trên các máy riêng biệt thay vì trên một máy tính duy nhất. (Không được đề cập trong hướng dẫn này).

Ubuntu Desktop

Hướng dẫn này dựa trên Ubuntu Server nhưng sẽ hoạt động trên Ubuntu Desktop. Thay vì sử dụng các công cụ GUI, bạn sẽ sử dụng Terminal.

Proxmox

Chúng ta sẽ cài đặt Postiz trên một máy ảo Proxmox. Nếu bạn không quan tâm đến việc cài đặt Postiz trên Proxmox, bạn có thể bỏ qua hai phần dành riêng cho Proxmox.

Tệp YAML

Hướng dẫn này chỉnh sửa các tệp YAML (phần mở rộng .yaml hoặc .yml). Khoảng trắng là một phần của định dạng YAML và phải được tuân thủ, nếu không bạn sẽ gặp lỗi.

Bước 1. Tạo máy ảo Proxmox

  1. Tải xuống Ubuntu Server ISO và đưa nó vào Proxmox.
  2. Từ bảng điều khiển Proxmox, tạo một máy ảo mới có tên vm-postiz.
  3. Đặt ổ cứng thành 50G, phân bổ 4 lõi CPU (2 socket với 2 lõi mỗi socket) và 8G RAM.
    • Kích thước ổ cứng 50G sẽ còn khoảng 11G dung lượng trống khi cài đặt phiên bản máy chủ. Tăng kích thước này nếu bạn cài đặt Ubuntu Desktop hoặc có nhu cầu lớn về số lượng tài khoản mạng xã hội sẽ sử dụng sau này.
    • Trên phiên bản Ubuntu Server, bạn có thể sử dụng 2 lõi thay vì 4 lõi nhưng có thể bị chậm. Trên phiên bản Desktop, 4 lõi là mức tối thiểu.
    • 4GB RAM là mức tối thiểu được khuyến nghị để chạy Postiz, nhưng nên để 8GB để hoạt động tốt hơn.
  4. Khi máy ảo được khởi động lần đầu tiên, nó sẽ khởi động trên ISO, từ đó bạn sẽ bắt đầu cài đặt Ubuntu Server.

Bước 2. Cài đặt Ubuntu

(Nếu bạn đang cài đặt thằng Ubuntu lên ổ cứng máy tính (thay cho HĐH cũ), hãy sử dụng một công cụ như Rufus để làm cho ISO có thể khởi động từ USB)

  1. Từ màn hình khởi động, chọn Try or Install Ubuntu Server“. Bỏ qua việc cập nhật trình cài đặt, cài đặt OpenSSH.
  2. Sau khi cài đặt xong, bạn cần khởi động lại máy chủ. Nhấn Enter để “gỡ bỏ” ISO cài đặt.

Cập nhật:

Đăng nhập vào máy chủ Ubuntu và cập nhật danh sách và phiên bản gói. Bạn cần có quyền nâng cao (sudo):

sudo apt update
sudo apt upgrade

Cài đặt OpenSSH

  1. OpenSSH là một triển khai mã nguồn mở của giao thức SSH. Nó cho phép đăng nhập máy chủ từ xa. Bạn có thể bỏ qua bước này nếu bạn không cần truy cập máy chủ từ một máy tính khác. Cài đặt nó bằng lệnh:
sudo apt install openssh-server
  1. Để kết nối với máy chủ, bạn cần biết địa chỉ IP của nó:
ipaddr show
  1. Sau khi cài đặt máy chủ OpenSSH, bạn có thể cài đặt một công cụ như Putty hoặc Termius để truy cập máy chủ.

Khởi động lại Ubuntu

Nếu bạn cần khởi động lại máy chủ, hãy nhập:

sudo reboot now

Cài đặt QEMU trên máy ảo Proxmox Postiz

  1. QEMU là một trình giả lập mã nguồn mở miễn phí, giúp cải thiện khả năng giám sát, nâng cao hiệu suất và thực thi các lệnh trên hệ thống khách bằng cách cho phép giao tiếp giữa máy chủ Proxmox VE và máy ảo. Để cài đặt guest agent, hãy sử dụng lệnh sau:
sudo apt install qemu-guest-agent
  1. Sau khi cài đặt xong, hãy tắt máy ảo. Từ bảng điều khiển Proxmox, chọn máy ảo, đi tới tab Options, nhấp đúp vào QEMU Guest Agent và bật chức năng từ hộp thoại xuất hiện.
  1. Sau khi máy ảo khởi động, hãy xác minh rằng QEMU guest agent đang chạy bằng cách kiểm tra trạng thái dịch vụ:
systemctl status qemu-guest-agent

Cài đặt/cấu hình Docker

Bước 1: Sơ đồ trên minh họa giải pháp Postiz, bao gồm các thành phần khác nhau, mỗi thành phần chạy trong container Docker riêng (ngoại trừ Caddy). Docker Compose là công cụ được sử dụng để xác định và chạy các ứng dụng. Bước này sẽ hướng dẫn bạn cài đặt Docker Compose.

Đầu tiên, thiết lập Docker’s APT repository

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
 $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
 sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

    Tiếp theo, cài đặt Docker:

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    Để kiểm tra cài đặt Docker:

    sudo docker run hello-world

    Nếu bạn gọi script hello-world mà không có quyền nâng cao, bạn sẽ gặp lỗi. Điều này là do người dùng không phải root không có quyền chạy Docker.

    Cấp quyền cho người dùng không phải root để quản lý và chạy Docker:

    Tạo nhóm docker (nếu chưa tồn tại):

    sudo groupadd docker

    Thêm người dùng hiện tại vào nhóm docker:

    sudo usermod -aG docker $USER

    Kích hoạt nhóm mới:

    newgrp docker

    Xác minh rằng Docker có thể được chạy mà không cần quyền nâng cao:

    docker run hello-world

    Cài đặt/cấu hình Postiz

    1. Sau khi cài đặt và chạy thử Docker, việc cài đặt các thành phần tạo nên Postiz liên quan đến việc thực thi một tệp YAML. Tệp YAML nguồn và hướng dẫn có trên trang Tài liệu Postiz.
    2. Trong hướng dẫn này, URL cho máy chủ Postiz sẽ là https://postiz.homenet.lan. Điều chỉnh cho phù hợp nếu URL của bạn khác.
    3. Tạo một thư mục có tên là postiz và di chuyển đến nó:
    mkdir postiz
    cd postiz
    1. Sao chép tệp nội dung sau vào trình soạn thảo văn bản và lưu nó với tên docker-compose.yml
    services:
      postiz:
        image: ghcr.io/gitroomhq/postiz-app:latest
        container_name: postiz
        restart: always
        environment:
          # You must change these. Replace `postiz.your-server.com` with your DNS name - what your web browser sees.
          MAIN_URL: "https://postiz.your-server.com"
          FRONTEND_URL: "https://postiz.your-server.com"
          NEXT_PUBLIC_BACKEND_URL: "https://postiz.your-server.com/api"
          JWT_SECRET: "random string that is unique to every install - just type random characters here!"
     
          # These defaults are probably fine, but if you change your user/password, update it in the
          # postiz-postgres or postiz-redis services below.
          DATABASE_URL: "postgresql://postiz-user:postiz-password@postiz-postgres:5432/postiz-db-local"
          REDIS_URL: "redis://postiz-redis:6379"
          BACKEND_INTERNAL_URL: "http://localhost:3000"
          IS_GENERAL: "true" # Required for self-hosting.
          # The container images are pre-configured to use /uploads for file storage.
          # You probably should not change this unless you have a really good reason!
          STORAGE_PROVIDER: "local"
          UPLOAD_DIRECTORY: "/uploads"
          NEXT_PUBLIC_UPLOAD_DIRECTORY: "/uploads"
        volumes:
          - postiz-config:/config/
          - postiz-uploads:/uploads/
        ports:
          - 5000:5000
        networks:
          - postiz-network
        depends_on:
          postiz-postgres:
            condition: service_healthy
          postiz-redis:
            condition: service_healthy
     
      postiz-postgres:
        image: postgres:17-alpine
        container_name: postiz-postgres
        restart: always
        environment:
          POSTGRES_PASSWORD: postiz-password
          POSTGRES_USER: postiz-user
          POSTGRES_DB: postiz-db-local
        volumes:
          - postgres-volume:/var/lib/postgresql/data
        networks:
          - postiz-network
        healthcheck:
          test: pg_isready -U postiz-user -d postiz-db-local
          interval: 10s
          timeout: 3s
          retries: 3
      postiz-redis:
        image: redis:7.2
        container_name: postiz-redis
        restart: always
        healthcheck:
          test: redis-cli ping
          interval: 10s
          timeout: 3s
          retries: 3
        volumes:
          - postiz-redis-data:/data
        networks:
          - postiz-network
     
     
    volumes:
      postgres-volume:
        external: false
     
      postiz-redis-data:
        external: false
     
      postiz-config:
        external: false
     
      postiz-uploads:
        external: false
     
    networks:
      postiz-network:
        external: false
    1. Sửa đổi 4 dòng (Dòng 8–11):
      • Thay thế tất cả các trường hợp của https://postiz.your-server.com bằng https://postiz.homenet.lan. Điều này sẽ thay đổi các dòng 8–10.
      • Tạo một mật khẩu ngẫu nhiên và thay thế văn bản trong JWT_SECRET (dòng 11).
    LƯU Ý:
    Bạn sẽ cần tạo mật khẩu ngẫu nhiên ở đây, ví dụ một chuỗi ngẫu nhiên các ký tự: ePOKO8KO4sg1RAN
    1. Sau khi sửa xong file docker-compose.yml thì khởi chạy nó:
    docker-compose up -d

    Quá trình cài đặt hoàn tất khi các thành phần hiển thị trạng thái running

    Cài đặt/cấu hình Caddy

    Các lệnh cài đặt và cấu hình Caddy được lấy từ tài liệu của Caddy.

    Caddy đóng vai trò là proxy ngược (reverse proxy), xử lý các yêu cầu đến https://postiz.homenet.lan và định tuyến chúng đến cổng 5000 của máy chủ Postiz. Caddy sẽ sử dụng CA nội bộ của nó cho HTTPS.

    Thiết lập kho APT của Caddy và cài đặt:

    sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
    sudo apt update
    sudo apt install caddy

      Với quyền nâng cao, chỉnh sửa tệp /etc/caddy/Caddyfile:

      sudo nano /etc/caddy/Caddyfile

      Thay thế nội dung bằng nội dung sau (điều chỉnh nếu URL của bạn không phải là postiz.homenet.lan) và lưu nó:

      postiz.homenet.lan {
       reverse_proxy * localhost:5000
       tls internal
      }

      Tạo Caddy Service

      1. Tiếp theo, tạo dịch vụ sẽ gọi Caddy, đảm bảo rằng nó khởi động bất cứ khi nào máy chủ khởi động lại. Chỉnh sửa tệp (với quyền nâng cao) /etc/systemd/system/caddy.service và dán nội dung sau:
      # caddy.service
      #
      # For using Caddy with a config file.
      #
      # Make sure the ExecStart and ExecReload commands are correct
      # for your installation.
      #
      # See https://caddyserver.com/docs/install for instructions.
      #
      # WARNING: This service does not use the --resume flag, so if you
      # use the API to make changes, they will be overwritten by the
      # Caddyfile next time the service is restarted. If you intend to
      # use Caddy's API to configure it, add the --resume flag to the
      # `caddy run` command or use the caddy-api.service file instead.
      [Unit]
      Description=Caddy
      Documentation=https://caddyserver.com/docs/
      After=network.target network-online.target
      Requires=network-online.target
      [Service]
      Type=notify
      User=caddy
      Group=caddy
      ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
      ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
      TimeoutStopSec=5s
      LimitNOFILE=1048576
      PrivateTmp=true
      ProtectSystem=full
      AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
      [Install]
      WantedBy=multi-user.target

      Dịch vụ tham chiếu đến tệp caddy mà chúng ta đã tạo trước đó.

      Để xác minh rằng Caddy Service đang hoạt động, hãy nhập:

      systemctl status caddy

      Định tuyến postiz.homenet.lan đến máy chủ Postiz

      Đoạn này liên quan đến việc chuyển URL thành địa chỉ IP của máy.

      Chạy Postiz từ Single Computer

      Nếu bạn sẽ chạy Postiz từ một máy tính duy nhất (ví dụ: bạn đã cài đặt Ubuntu Desktop), bạn cần chỉnh sửa tệp /etc/hosts với quyền nâng cao. Thêm 127.0.2.1 postiz.homenet.lan vào tệp này và lưu lại.

      Để xác minh mọi thứ được thiết lập chính xác, hãy nhập ping postiz.homenet.lan và bạn sẽ nhận được phản hồi lại tương tự như sau:

      Truy cập Postiz từ các máy tính khác trên mạng LAN

      Nếu bạn đã cài đặt phiên bản máy chủ của Ubuntu (như mô tả trong hướng dẫn này), bạn cần:

      • Cố định địa chỉ IP để nó không bao giờ thay đổi.
      • Điều chỉnh các máy tính khác trên mạng LAN để phân giải URL thành địa chỉ IP của máy chủ Postiz.

      Cố định địa chỉ IP của máy chủ

      Địa chỉ IP của máy chủ Postiz là động, có nghĩa là nó có thể thay đổi. Nếu địa chỉ IP thay đổi, các máy tính khác trên mạng LAN sẽ không thể tham chiếu đến nó. Cố định địa chỉ IP đảm bảo nó không đổi. Chúng ta sẽ có hai cách để thực hiện:

      1. Mã hóa cứng địa chỉ IP

      Sử dụng ip addr show để liệt kê thông tin mạng và ghi lại tên bộ điều hợp mạng.

      Sau đó, liệt kê nội dung của thư mục /etc/netplan/ và chỉnh sửa tệp YAML chứa trong đó (với quyền nâng cao).

      Thay thế nội dung của tệp bằng cấu hình tương tự như được liệt kê ở đây. Lưu ý: Tệp này sẽ cần được sửa đổi cho mạng của bạn.

      #network:
       version:2
       renderer: networkd
       ethernets:
       ens18:# this line can be different in your case
       dhcp4:no
       addresses:
       -192.168.16.7/24# this line can be different in your case
       routes:
       - to: default
       via:192.168.16.1# this line can be different in your case
       nameservers:
       addresses: [192.168.16.1] # this line can be different in your case

      2. Cố định địa chỉ IP bằng mục DHCP Static

      Nhiều bộ định tuyến cho phép bạn liên kết địa chỉ MAC của thiết bị (máy chủ Postiz trong trường hợp này) với một địa chỉ IP cố định. Địa chỉ MAC có thể được tìm thấy bằng cách sử dụng ip addr show. Điều này được gọi là mục DHCP Static.

      Điều chỉnh các máy tính khác trên mạng LAN

      Sau khi cố định địa chỉ IP của máy chủ Postiz, các máy tính khác trên mạng LAN cần phân giải URL postiz.homenet.lan thành địa chỉ IP (ví dụ: 192.168.16.7).

      Chúng ta sẽ xem xét hai phương pháp:

      1. Sửa đổi tệp hosts của từng máy tính trên mạng LAN

      • Chỉnh sửa nội dung tệp /etc/hosts nếu là Ubuntu.
      • Trong Windows, bạn cần chỉnh sửa tệp (với quyền quản trị) %WINDIR%/System32/drivers/etc/hosts bằng trình soạn thảo văn bản.

      Việc sửa đổi các tệp hosts riêng lẻ khá tốn công, bao gồm việc thay đổi tệp host của mọi máy tính sẽ cần truy cập máy chủ Postiz.

      2. Tạo mục DNS tĩnh

      Nếu bộ định tuyến của bạn hỗ trợ chức năng này (như trong ví dụ từ bộ định tuyến Mikrotik), bạn có thể thêm một mục DNS tĩnh. Phương pháp này chỉ yêu cầu thay đổi cấu hình ở một nơi.

      Kiểm tra giải pháp

      Từ dấu nhắc lệnh, bộ định tuyến của bạn hoặc một thiết bị đầu cuối lệnh trên các máy tính khách, hãy ping máy chủ Postiz và bạn sẽ nhận được phản hồi.

      Đăng nhập vào máy chủ Postiz

      1. Lần đầu tiên bạn đăng nhập vào Máy chủ Postiz tại https://postiz.homenet.lan, bạn sẽ được nhắc chấp nhận chứng chỉ tự ký. Sau khi được chấp nhận, giao diện Postiz sẽ trông như thế này:
      1. Bạn hãy đăng ký 1 tài khoản để sử dụng Postiz, đây sẽ là tài khoản Super Admin.
      2. Việc thiết lập các kết nối mạng xã hội bạn hãy xem hướng dẫn Providers Configuration, vì mỗi mạng xã hội sẽ cần tạo API riêng.

      Hy vọng hướng dẫn này sẽ giúp bạn cài đặt Postiz một cách dễ dàng!

      You may also like

      Nhận thông báo qua email
      Nhận thông báo cho
      guest

      0 Bình luận
      Mới nhất
      Cũ nhất Nhiều like nhất
      Phản hồi nội tuyến
      Xem tất cả bình luận