Quickly run / backup / migrate your discourse instance
Optional - if you don't need backup or migrate
- Discourse
- mise for manage environment variables
- Rclone for backup data
- Magic Wormhole for migrate data
$ git clone https://github.com/sydomo/discourse-shell-scripts.git ~/.discourse
$ chmod +x discourse-manager
# (Optional) Edit .env file and set password variables
# Install mise
$ curl https://mise.run | sh
$ echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
$ source ~/.bashrc && mise --version
# Enable mise
$ cp .env.example .env
$ mise trust mise.toml
$ cd ~/.discourse
$ git checkout discourse-manager; git pull; chmod +x discourse-manager
$ cd ~/.discourse
$ ./discourse-manager help
# Run A Discourse Instance
$ ./discourse-manager install
$ vim /var/discourse/containers/app.yml
$ ./discourse-manager rebuild
# Config Email SMTP
$ vim /var/discourse/containers/app.yml
$ ./discourse-manager restart
# Or Manually Create Admin Account
$ ./discourse-manager enter
$ rake admin:create
# Install Rclone for Upload Backup
$ curl -sSf https://rclone.org/install | bash
$ rclone version
# Config Rclone Storage Provider
$ rclone config
# Install 7z for Compress & Encrypt Backup
$ apt-get install p7zip-full
$ 7z | grep "7-Zip"
$ ./discourse-manager backup [rclone-remote-name]
Automatic scheduled backup (Crontab.guru):
$ mkdir -p /tmp/discourse
$ crontab -e
# If your Rclone remote name is "pcloud_crypt"
$ 5 4 * * * bash -c "${HOME}/.discourse/discourse-manager backup pcloud_crypt" &>> /tmp/discourse/backup.log
# Install uv
$ curl -LsSf https://astral/uv/install | sh
$ uv -V
# Install Magic Wormhole
$ uv tool install magic-wormhole
$ wormhole --version
Old Server:
$ ./discourse-manager migrate
New Server:
$ cd /var/discourse/shared/standalone/backups/default
$ wormhole receive [wormhole-code]