Administrator
Administrator
Published on 2024-12-16 / 17 Visits
0
0

在Ubutnu24.04 上运行 halo

服务器安全配置

  • 买到服务器后的第一件事:远程登陆,更新软件并重启。

# 用root账号登录,系统会提示输入密码
ssh root@ip_address

# 更新软件
apt update
apt upgrade

# 重启
reboot
  • 买到服务器的第二件事:新建用户,添加 sudo 权限。

# 新建用户,名字随意,此处用user
# 新建账号时系统会提示添加用户相关信息
adduser user

# 赋予user sudo 权限
ln /usr/sbin/usermod /usr/bin
usermod -a -G sudo user
newgrp sudo

# 退出登录
logout

买到服务器的第三件事:测试ssh,修改相关配置。

  • 测试新建用户能否正常登录

# 用新建账号登陆账号,系统会提示输入密码
ssh user@ip_address
#  登录成功后退出登录
logout
  • 生成ssh密钥并测试用户能否无密码登录

    # 在本机终端环境下生成ssh密钥, 邮箱可有可无
    ssh-keygen -t ed25519 -C "user@email.com"
    
    # 在系统提示下完成相关信息输入后,最终生成以下文本:
    The key's randomart image is:
    +--[ED25519 256]--+
    |            o=+=.|
    |         o +. +++|
    |          = . o..|
    |         . . . . |
    |        S     =..|
    |         +. o+.oo|
    |     ...oo..Eo .o|
    |    .++=*.o  . ..|
    |   o+o+*=+ ..  ..|
    +----[SHA256]-----+
    
    # 将公钥导入远程服务器
    ssh-copy-id user@ip_address
    
    # 退出登录
    logout
    
    # 测试无密码登录
    ssh user@ip_address
    

修改ssh配置,确保服务器安全

用喜欢的编辑器修改 /etc/ssh/sshd_config 文件中的内容:

1.禁止 root 用户登录 :将文件中的 PermitRootLogin yes 修改为 PermitRootLogin no

2.禁止 密码 登录:将文件中的 #PasswordAuthentication yes 修改为 PasswordAuthentication no

使以上更改生效,需要重启服务器的ssh服务,在终端输入 sudo systemctl restart ssh

打开新的终端,测试是否还能用root用户或者密码登录。

为了让服务器更安全,还可以更改ssh默认端口:
1.用喜欢的编辑器修改 /lib/systemd/system/ssh.socket 文件中的内容:将 ListenStream=22 修改为 ListenStream=23468 当然,也可以将23468 改成你喜欢的任意一个小于65536的数字,只要端口不冲突即可。

2.用喜欢的编辑器修改 /etc/ssh/sshd_config 文件的内容:将 #Port22 修改为 Port 23468
使以上更改生效,请先在终端输入 sudo systemctl daemon-reload ,再输入 sudo systemctl restart ssh

打开新的终端,利用 ssh -p 23468 user@ip_address 测试是否登录成功

注意:修改ssh配置时千万要小心,确保不要断开旧有链接,否则,只能寻求服务器供应商的帮助了。

买到服务器的第四件事:打开防火墙,做好安全配置。

远程登录后,输入以下命令:

sudo ufw allow 23468 # enable ssh
sudo ufw allow 80 # enable http
sudo ufw allow 443 # enable https
sudo ufw enable

运行环境配置

  • 安装 java 运行环境

    # 新建文件夹存放java 库文件
    sudo mkdir /usr/local/java
    
    # 移动到新建文件夹,下载最新版 openjdk 文件并解压
    cd /usr/local/java
    sudo wget https://download.java.net/java/GA/jdk23.0.1/c28985cbf10d4e648e4004050f8781aa/11/GPL/openjdk-23.0.1_linux-x64_bin.tar.gz
    sudo tar -xvf openjdk-23.0.1_linux-x64_bin.tar.gz 
    
    # 可以更改文件夹名
    sudo mv jdk-23.0.1/ jdk23
    
    

    用喜欢的编辑器修改 /etc/profile 文件的内容,在最后添加:

    # JAVA
    export JAVA_HOME=/usr/local/java/jdk23
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVAHOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    

    为使修改生效,在终端输入命令: source /etc/profile

  • 安装 mariadb 数据库

    sudo apt install mariadb-server -y
    sudo mysql_secure_installation
    

    在终端输入 sudo mysql 进入数据库程序后,新建数据库:

    create database halodb character set utf8mb4 collate utf8mb4_bin;
    
    create user 'halo'@'localhost' identified by 'password';
    
    grant all privileges on halodb.* TO 'halo'@'localhost';
    
    flush privileges;
    
    exit
    

    测试运行Halo 程序的安装、配置

  • 下载并安装halo jar

    # 创建存放运行包的目录
    mkdir ~/app && cd ~/app
    
    # 下载运行包并更名
    wget https://github.com/halo-dev/halo/releases/download/v2.20.11/halo-2.20.11.jar
    mv halo-2.20.11.jar halo.jar
    
  • 添加配置文件

    # 创建配置文件目录
    mkdir ~/.halo2 && cd ~/.halo2
    # 使用编辑器创建配置文件,此处用nano
    sudo nano application.yaml
    

配置文件内容如下:

server:
  # 运行端口
  port: 8090
spring:
  # 数据库配置,此处用 MariaDB,填写之前创建的数据库信息
  r2dbc:
    url: r2dbc:pool:mariadb://127.0.0.1:3306/halodb
    username: halo
    password: password
  sql:
    init:
      mode: always
      # 需要配合 r2dbc 的配置进行改动
      platform: mariadb
halo:
  caches:
    page:
      # 是否禁用页面缓存
      disabled: true
  # 工作目录位置
  work-dir: ${user.home}/.halo2
  # 外部访问地址
  external-url: http://localhost:8090
  # 附件映射配置,通常用于迁移场景
  attachment:
    resource-mappings:
      - pathPattern: /upload/**
        locations:
          - migrate-from-1.x
  • 测试运行

    # 打开防火墙测试端口
    sudo ufw allow 8090
    
    # 测试命令
    cd ~/app && java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
    

如果一切顺利,halo没有报错的话,我们就可以通过ip地址登录初始安装界面了,在浏览器输入 ip_address:8090 可以看到以下界面:

setup-2.20-d35ad81d4781cee8aec18ad54e111831.webp

  • 确保服务开机自启

用喜欢的编辑器在 /etc/systemd/system 文件夹中创建 halo.service 文件 ,内容如下

[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=user
ExecStart=/usr/local/java/jdk23/bin/java -Dfile.encoding=UTF-8 -server -Xms256m -Xmx256m -jar /home/user/app/halo.jar --spring.config.additional-location=optional:file:/home/user/.halo2/
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

利用 Caddy 反向代理实现自动https

没有购买过域名的同学,本教程已经结束了。但如果你购买了域名并想要使用自动https的话,还可以再看看:

  • 下载并安装 Caddy

    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
    
  • 编写Caddyfile

    使用你喜欢的编辑器将文件/etc/caddy/Caddyfile 修改如下:

    # 将example.com 更换为你的域名
    example.com:443 
    
    encode gzip
    
    reverse_proxy 127.0.0.1:8090
    

大功告成!

Halo的备份、恢复与升级

  • Halo 的备份

在 Console 中,点击左侧菜单的 备份,进入备份页面。

点击右上角的 创建备份 按钮,即可创建一个新的备份请求,需要注意的是,创建备份请求并不会立即开始备份,而是会在后台异步执行,因此需要等待一段时间才能看到备份的结果。

create-backup-dec85e8ea9631145ee3a9f63da525fc9.webp

备份中:

backup-running-6f782ae58a1264639efa8423875ccf8f.webp

备份完成:

backup-complete-06cef728c048f91a8a2296f5d75da08e.webp

  • Halo 的恢复

在恢复前,需要了解以下几点:

  1. 恢复不限制部署方式,也不限制数据库,也就是说新站点的部署方式和数据库类型可以和备份的站点不同。

  2. 恢复过程可能会持续较长时间,期间请勿刷新页面。

  3. 在恢复的过程中,虽然已有的数据不会被清理掉,但如果有冲突的数据将被覆盖。

  4. 恢复完成之后会提示停止运行 Halo,停止之后可能需要手动运行。

在 Console 中,点击左侧菜单的 备份,进入备份页面,然后点击 恢复 选项卡即可进入恢复界面,阅读完注意事项之后点击 开始恢复 按钮即可显示备份文件上传界面。

before-restore.webp

restore.webp

Halo 支持三种恢复方式:

  1. 上传备份文件:上传已有的备份文件进行恢复。

  2. 远程恢复:从远程 URL 下载备份文件进行恢复。

  3. 从备份文件恢复:支持从backups 目录扫描备份文件,并选择文件进行恢复。

提示

如果你的备份文件较大,推荐提前将备份文件上传到服务器,然后选择 从备份文件恢复 方式进行恢复,避免因为网络原因导致上传失败。

使用 上传备份文件 方式进行恢复的操作示例:

选择备份文件后,点击 上传 按钮即可开始上传备份文件,上传完成后会自动开始恢复。

restore-upload.webp

恢复完成,会提示重启 Halo,点击 确定 按钮即可重启 Halo。

restore-complete-6f5e6a100e98958f41c575f97bc781fe.webpwaiting-restart-fb4aa20e8eec5f9c97c75e5cfc5d5981.webp

最后,建议去服务器检查 Halo 的运行状态,如果没有设置自动重启,需要手动重启。

  • Halo升级

  1. 停止 Halo 服务

    service halo stop
    
  2. 下载新版本的 Halo 运行包,覆盖原有的运行包

    wget https://dl.halo.run/release/halo-2.20.0.jar -O /home/halo/app/halo.jar
    
  3. 启动 Halo 服务

    service halo start
    


Comment