静看光阴荏苒
不管不顾不问不说也不念

ARM架构的Oracle Linux 8系统安装常用软件

今天看到消息说Oracle的永久免费套餐内又加了新内容:免费ARM小鸡,4核心CPU,24G内存。

我开了一台后发现系统有点蛋疼,只能装他们家的OracleLinux8,而且又是ARM架构,可玩性稍微差了点。

我首先想到的是重装系统,但是后来觉得就算把系统装成别的了也都差不多,毕竟是ARM。。

所以最后我的打算是当个下载机用,因为这个免费套餐里面还有200GB的免费存储卷可以用,而且月流量有10TB。

准备工作

说是准备工作,不如说是踩坑后的处理办法,下面这些都是我事后配置完发现的问题。所以建议在开始部署前就配置了。

首先是这个系统默认启用了SELinux,这玩意会影响Nginx的反向代理,解决方法有两种,你可以直接关闭SELinux或者执行下面的命令:

setsebool -P httpd_can_network_connect 1

再就是防火墙,这个系统默认启用了Firewall,后续我们安装的Docker也是要用到这个防火墙的,不能直接关闭,关闭后会导致容器的网络出问题。

但是后面我装的Aria2又起了一堆端口,写规则太麻烦,我也懒得配置,有一个简单的办法,直接把默认区域改成信任,即允许全部流量:

firewall-cmd --set-default-zone=trusted
firewall-cmd --reload

查看当前的默认区域,回显trusted就OK了:

firewall-cmd --get-default-zone

Oracle还有一个自带的防火墙,这里默认只放行了22端口,你可以在“计算”-“实例”-“实例详细信息”-“虚拟云网络”看到如下图所示的内容:

点进去找到“安全列表”:

然后在这里添加一个入站规则,为方便起见直接按照下图配置为允许全部流量即可:

安装Qbittorrent

先装个Docker上去,用Docker跑Qbittorrent。这里先记录一下Docker的安装方法。

我一般装Docker都直接用官方的一键安装jio本,但很不幸的是官方的jio本不支持这个OracleLinux系统。。

好在这个OracleLinux是完全兼容CentOS的,所以可以直接使用CentOS的存储库来安装。

先更新系统,安装需要用到的包:

sudo dnf -y update
sudo dnf -y install dnf-plugins-core

添加docker的存储库:

sudo dnf config-manager \
     --add-repo \
     https://download.docker.com/linux/centos/docker-ce.repo

然后直接安装即可:

sudo dnf -y install docker-ce docker-ce-cli containerd.io

启动以及设置开机启动:

sudo systemctl enable --now docker

oracle的小鸡默认情况下都是用opc这个普通用户登录的,把这个用户加到docker组里面之后就可以用这个普通用户来使用docker命令行了:

sudo usermod -aG docker opc

注:如果dockercli还是提示权限问题,重启系统即可生效。

我一般还会安装一个compose来编排容器,但是同样的以往在x86平台下直接下载二进制文件来安装compose的方法并不适用于arm平台。

这里可以借助pip来安装,首先装需要用到的包:

sudo dnf -y install python3-devel
sudo dnf group install "Development Tools"

然后就可以通过pip来安装了:

pip3 install docker-compose

安装完成后root用户不能正常使用,做一个软链接即可:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

新建一个compose:

mkdir qbittorrent && cd qbittorrent && nano docker-compose.yml

写入如下配置:

version: '3.5'
services:
  qbittorrent:
    image: ghcr.io/linuxserver/qbittorrent
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - WEBUI_PORT=8080
    volumes:
      - ./config:/config
      - ./downloads:/downloads
    ports:
      - 6881:6881
      - 6881:6881/udp
      - 8080:8080
    restart: unless-stopped

up起来即可:

docker-compose up -d

安装Cloudreve

安装Nginx/MariaDB/Redis/Supervisor:

sudo dnf install -y nginx mariadb-server redis supervisor

启动以及设置开机自启:

sudo systemctl enable --now nginx mariadb redis supervisord

安装Aria2,装Aria2的目的是我打算后续配合Cloudreve实现离线下载。

OracleLinux8的存储库里面是没有Aria2的,但是可以添加EPEL的存储库来安装:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf -y install aria2

初始化数据库:

sudo mysql_secure_installation

创建一个名为cloudreve的数据库和用户:

mysql -u root -p
CREATE DATABASE cloudreve CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON cloudreve.* TO cloudreve@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit

下载Cloudreve的ARM版本:

mkdir cloudreve && cd cloudreve
wget https://github.com/cloudreve/Cloudreve/releases/download/3.3.1/cloudreve_3.3.1_linux_arm64.tar.gz
tar -xzvf cloudreve_3.3.1_linux_arm64.tar.gz

新建一个配置文件:

nano conf.ini

写入如下配置:

[System]
Mode = master
Listen = 127.0.0.1:5000
Debug = false

[Database]
Type = mysql
Port = 3306
User = cloudreve
Password = password
Host = 127.0.0.1
Name = cloudreve
TablePrefix = cd_

[CORS]
AllowOrigins = *
AllowMethods = OPTIONS,GET,POST
AllowHeaders = *
AllowCredentials = false

[Redis]
Server = 127.0.0.1:6379
Password =
DB = 0

在前台手动运行一次,获得你的管理员账号和密码,之后按Ctrl+C退出运行:

./cloudreve

新建Supervisor进程守护配置文件:

sudo nano /etc/supervisord.d/cloudreve.ini

写入如下配置:

[program:cloudreve]
directory=/home/opc/cloudreve
command=/home/opc/cloudreve/cloudreve
user=opc
autostart=true
autorestart=true
stderr_logfile=/var/log/cloudreve.err
stdout_logfile=/var/log/cloudreve.log
environment=CODENATION_ENV=prod

更新配置并启动Cloudreve:

sudo supervisorctl update

接下来配置Aria2,首先创建需要用到的目录:

mkdir -p /home/opc/cloudreve/aria2/{config,temp}

新建一个Aria2配置文件:

nano /home/opc/cloudreve/aria2/config/aria2.conf

写入如下配置:

enable-rpc=true
rpc-listen-port=6800
rpc-secret=password
save-session-interval=1
save-session=/home/opc/cloudreve/aria2/config/aria2.session
auto-save-interval=30
max-concurrent-downloads=100
max-connection-per-server=16
split=64
enable-dht=true
dht-file-path=/home/opc/cloudreve/aria2/config/dht.dat
enable-peer-exchange=true
bt-enable-lpd=true
bt-max-peers=0
seed-time=0
bt-tracker=udp://tracker.opentrackr.org:1337/announce,udp://tracker.moeking.me:6969/announce,http://p4p.arenabg.com:1337/announce

[重要]我实测Oracle的机器Aria2必须要添加bt-tracker,没有tracker的话,磁力链接根本不能下载,你可以在这里找到每日更新的热门tracker:

https://github.com/ngosang/trackerslist

现在新建一个Supervisor进程守护配置文件,用于守护aria2进程:

sudo nano /etc/supervisord.d/aria2.ini

写入如下配置:

[program:aria2]
command=/usr/bin/aria2c --conf-path=/home/opc/cloudreve/aria2/config/aria2.conf
user=opc
autostart=true
autorestart=true
stderr_logfile=/var/log/aria2.err
stdout_logfile=/var/log/aria2.log
environment=CODENATION_ENV=prod

更新配置并启动Aria2:

sudo supervisorctl update

现在来配置nginx反向代理,在配置反向代理之前,我们需要安装Certbot,用于签发SSL证书。

[重要]这里有一个大坑,不要使用snapd来安装Certbot,通过snapd安装的Certbot会因为架构问题无法使用,虽然官网上明确说明是支持ARM的,但不知为何Oracle的机器还是不行。

可行的办法是直接通过包管理器装,需要注意的是Certbot这个包只存在于EPEL存储库,你需要先添加EPEL存储库才能安装(本文之前为了安装Aria2已经添加过了)

所以我们这里直接安装即可:

sudo dnf -y install certbot python3-certbot-nginx

然后新建nginx站点配置文件:

sudo nano /etc/nginx/conf.d/cloudreve.conf

写入如下配置:

server {
    listen       80;
    server_name  cloudreve.233.fi;
    client_max_body_size 0;

    error_log /var/log/nginx/cloudreve.error.log;
    access_log /var/log/nginx/cloudreve.access.log;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }
}

签发SSL证书:

sudo certbot --nginx

至此所有配置就全部完成了。不得不说换了个架构后坑还是有点多的。。

不过这样折腾了一下现在已经完美的使用起来了,正好我的contabo今天到期,可以把contabo的大盘鸡扔了。又省钱了!还是很香的。。。

赞(2)
未经允许不得转载:荒岛 » ARM架构的Oracle Linux 8系统安装常用软件
分享到: 更多 (0)

评论 11

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    用 ubuntu 不好吗?非要折腾自己…

    exampleUser3周前 (05-27) Google Chrome 90.0.4430.212 Google Chrome 90.0.4430.212 GNU/Linux x64 GNU/Linux x64回复
    • 这机器装不了ubuntu,其次我不喜欢用ubuntu,如果可以选择我会用debian。不要拉发行版的仇恨了,没啥意义。

      LALA3周前 (05-27) Google Chrome 90.0.4430.212 Google Chrome 90.0.4430.212 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 没有拉仇恨,这机器可以装ubuntu, 而且但是不是 minimal,你装机的时候选 20.04 ,别选 20.04 minimal 就行。因为 oracle linux 还是 rh 系,教程也不多,很多 propietary 的东西。相比之下 deb 的生态可能更适合普通大众。

        exampleUser3周前 (05-27) Google Chrome 91.0.4472.77 Google Chrome 91.0.4472.77 GNU/Linux x64 GNU/Linux x64回复
        • 既然你没有拉仇恨,那我是不是可以理解为你在抬杠,我这篇文章写的没啥问题但是你非要在鸡蛋里面挑骨头,所以就把发行版拿出来说事,借此嘲讽我一波?
          或者说你有一种用Ubuntu的优越感,觉得用了Ubuntu之后其他的发行版尤其是RH系都是shit?
          如果你没有上面的想法,我在这里向你道歉。只是由于你的第一条评论不具有建设性的意义,我才会有此想法。
          就好比你辛辛苦苦花了个把小时在博客写了一篇基于Docker部署程序的文章,我内容都不看,直接杠你一句:为啥要用Docker,Podman不香吗?你看到这种回复会是什么感觉?
          至于你现在说的RH系的这些问题确实是存在的,我也知道,但是这和我这篇文章也没啥联系吧。换句话说,把我这篇文章的步骤搬到Ubuntu上面来操作,也简便不到哪里去。无非就是少了个SELinux和Firewall的配置步骤。

          LALA3周前 (05-27) Google Chrome 90.0.4430.212 Google Chrome 90.0.4430.212 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 什么时候装什么系统都要别人指手画脚了?

      Star3周前 (05-27) Google Chrome 91.0.4472.77 Google Chrome 91.0.4472.77 Mac OS X  10.15.7 Mac OS X 10.15.7回复
  2. #2

    ubuntu 20 可装arm ,前提是别选ubuntu 20 mini就行 :wink:
    个人倾向于用ubuntu,oracle的系统装不上supervisor,怎么都找不到源

    不得不说有坑3周前 (05-27) Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 我刚才试了下,确实可以这样。supervisor在epel源里面。

      LALA3周前 (05-27) Google Chrome 90.0.4430.212 Google Chrome 90.0.4430.212 Windows 10 x64 Edition Windows 10 x64 Edition回复
  3. #3

    可以选择Ubuntu 20.04(非mini版)

    zhu3周前 (05-27) Google Chrome 90.0.4430.212 Google Chrome 90.0.4430.212 Mac OS X  10.15.7 Mac OS X 10.15.7回复
  4. #4

    我就用他们家装了Navidrome,感觉还不错。

    Foliage3周前 (05-27) Google Chrome 90.0.4430.210 Google Chrome 90.0.4430.210 Android 11 Android 11回复
  5. #5

    lala好,网上找了台湾人的源码build了arm64v8的docker的ubuntu,但老崩溃
    能不能共享下源码或者给个思路? :cry:
    Docker Ubuntu18.04 Xfce4桌面系统(带VNC/noVNC)

    阿基缺德3周前 (05-28) Google Chrome 90.0.4430.210 Google Chrome 90.0.4430.210 Android 11 Android 11回复
    • 可以把dockerfile给你,但是这是我很久之前撸的东西了,现在不一定能build成功,而且是x86平台的。。我自己都没试过。。

      LALA3周前 (05-28) Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿