原文地址:https://lala.im/7647.html,請支持原作者!該處僅作轉載。
说起来LinkAce这个项目我很早就知道了,当时还准备拿来水一篇文章的:
但是当我搭建好了之后,发现有很多BUG。。而且作者自己当时也说了这个项目还在测试中,所以我就一直在等作者修。(当然现在也还有一些小问题233)
这一等就是大半年,现在终于发布正式版了。目前这是我比较中意的一款书签程序,所以我也决定重新水一篇搭建的文章。
LinkAce的官网有比较详细的搭建教程,但是那个方法不太适合想在一台服务器上部署多个应用的人,因为它直接就把80/443端口占了。所以这里我水一个用nginx反代的方法。
安装nginx/certbot/docker和一些需要用到的软件:
apt -y install curl nginx python-certbot-nginx
curl -sSL https://get.docker.com/ | sh
systemctl enable --now nginx docker
安装docker-compose:
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
新建一个目录进入到这个目录内:
mkdir -p /opt/linkace && cd /opt/linkace
把需要用到的配置文件下载下来,并给予正确的权限:
wget https://raw.githubusercontent.com/Kovah/LinkAce/master/.env.docker.production -O .env
wget https://raw.githubusercontent.com/Kovah/LinkAce/master/nginx.conf
chmod 777 .env
再新建一个docker-compose.yml:
nano docker-compose.yml
写入如下配置:
version: '3.5'
services:
linkace-db:
image: bitnami/mariadb:10.5
environment:
- MARIADB_ROOT_PASSWORD=password
- MARIADB_USER=imlala
- MARIADB_PASSWORD=password
- MARIADB_DATABASE=linkace
volumes:
- linkace_db:/bitnami
restart: unless-stopped
linkace-redis:
image: bitnami/redis:6.0
environment:
- REDIS_PASSWORD=password
restart: unless-stopped
linkace-app:
image: linkace/linkace:latest
depends_on:
- linkace-db
- linkace-redis
volumes:
- ./.env:/app/.env
- linkace_app:/app
- linkace_logs:/app/storage/logs
restart: unless-stopped
linkace-nginx:
image: bitnami/nginx:1.19
ports:
- "127.0.0.1:8080:8080"
depends_on:
- linkace-app
volumes:
- linkace_app:/app
- ./nginx.conf:/opt/bitnami/nginx/conf/server_blocks/linkace.conf:ro
restart: unless-stopped
volumes:
linkace_app:
linkace_logs:
linkace_db:
driver: local
注:
1.所有password字段务必设置一个高强度的密码。
2.127.0.0.1:8080这里的8080端口,如果你的8080端口已经被占用,这里你可以改为其他任意一个未占用的。
接下来编辑env配置文件:
nano .env
找到下面这些部分,password按照你之前compose上配置的内容填写即可:
DB_CONNECTION=mysql
DB_HOST=linkace-db
DB_PORT=3306
DB_DATABASE=linkace
DB_USERNAME=imlala
DB_PASSWORD=password
REDIS_HOST=linkace-redis
REDIS_PASSWORD=password
REDIS_PORT=6379
SESSION_DRIVER=redis
CACHE_DRIVER=redis
最后我们再编辑下载来的nginx配置文件:
nano nginx.conf
把如下位置改为:
...
location ~ \.php$ {
fastcgi_pass linkace-app:9000;
...
现在up起来即可:
docker-compose up -d
确认所有容器状态都是up:
docker-compose ps
之后执行下面的命令生成一个key:
docker-compose exec linkace-app php artisan key:generate
程序现在就跑起来了,但是现在外网是访问不到的。所以现在在宿主机新建一个nginx配置文件用于反向代理:
nano /etc/nginx/conf.d/linkace.conf
写入如下配置:
server {
listen 80;
server_name link.imlala.best; # 换成你的域名
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
注:如果你之前在compose内暴露的端口不是8080,这里需要修改为对应的。
使用certbot签一个ssl证书:
certbot --nginx
接下来访问你的域名开始安装,这些步骤我就省略了,直接保持默认下一步就可以,直到你看到这个页面,创建管理员账号:
如果不出意外的话,在创建完管理员账号后,程序又会跳回安装界面。(这是当前版本的BUG)
解决办法,手动编辑env配置文件:
nano .env
把这一行改为如下所示:
SETUP_COMPLETED=true
登录进去之后,找到系统设置-Cron令牌:
将你的这个URL复制下来,回到终端新建计划任务:
crontab -e
在里面配置上你的URL,以每分钟执行一次,例如:
* * * * * wget -qO- https://link.imlala.best/cron/example > /dev/null
至此,所有配置就完成了,现在你可以尝试添加第一个书签:
额外提示一下,程序是有中文的,可以在后台自己设置。