VPS能做什么(总结几个我正在用的服务的配置过程)

您所在的位置:网站首页 vps什么样的人会用啊 VPS能做什么(总结几个我正在用的服务的配置过程)

VPS能做什么(总结几个我正在用的服务的配置过程)

2024-02-20 11:55| 来源: 网络整理| 查看: 265

1 写在前面

VPS, Virtual Private Servers,中文即虚拟专用服务器

虽说入坑vps也有两年了,说来惭愧我至今仍分不清VPS、虚拟主机、云主机等一些专有名词的关系。最近感觉自己对VPS的需求越来越高,入门级的小鸡已经空间不足了,故决定放弃续费几年前入手的bandwagon祖传vps。(翻出了最开始的账单,这种价位的搬瓦工现在也很少了、经常缺货中)这段时间试了试阿里云(国内的话网站要备份,很多推荐国际站香港的服务器)、cloudcone(便宜,但感觉不稳),最终选择了大厂Vultr的产品;一个月$10(我选的硅谷机房)还是有点心痛的,但至少方便管理些、所有服务都能放在一台机器上。说到VPS、很多情况下还要牵涉到域名,我现在有两个域名:一个专门做博客、一个配置各种服务,都转移到了cloudflare上管理,域名续费一年的开支是$8.18+$8.03,累计起来每年要花近1000块,也算的上一笔不小的开支了(但相对于各种手游手一抖就是518,似乎也不算什么)。那么回归正题,VPS能为我带来些什么呢? 记得最开始是fq、到后来的密码管理、网盘分享、webdv存文献、bt下载、NAS外网访问、qq机器人…下面系统地记录一下自己用VPS搭建这些服务的步骤:(fq除外、我怕ip被封影响其他服务)

2 Bitwarden,密码管理服务

之前的一篇post有讲过具体搭建步骤,但废话比较多,我也懒得改了。新手还可以一看,和大佬一比也只能是班门弄斧了;这次还是也顺便回顾下。

2.1 安装docker、docker-compose

推荐去网上找一个一键安装脚本、省时省力,我在My_vimrc(最初用来记录vim个人配置)这个仓库整理了一些折腾vps时用到的脚本,接下来讲到的一些配置文件也有放里面。

2.2 配置文件(docker-compose.yml)

文件目录如下,其中bw-data中存放密码数据,最好及时备份,迁移到另一台vps时将这个文件夹拷贝覆盖就行。

~/bitwarden ├── bw-data │ ├── db.sqlite3 │ ├── icon_cache │ ├── rsa_key.der │ ├── rsa_key.pem │ └── rsa_key.pub.der └── docker-compose.yml

docker-compose.yml文件如下:

version: "3" services: bitwarden: image: bitwardenrs/server restart: always ports: - "8080:80" - "8081:3012" volumes: - ./bw-data:/data environment: WEBSOCKET_ENABLED: "true" SIGNUPS_ALLOWED: "false" #允许注册,配置的时候打开,之后关闭就行 WEB_VAULT_ENABLED: "true" #允许网页访问,配置好了可以关闭

其中左侧的8080端口(之后访问bitwarden的web页面所用端口)和8081端口(忘了啥用)可以随意改动,不过注意不要和其他服务端口冲突了(说个常识:http默认80端口、https默认443端口)。

2.3 运行服务

在 docker-compose.yml目录下运行 sudo docker-compose up -d。 若未报错则访问http://vps_ip:8080应该能打开如下页面,但要正常使用还需配置https。常用命令:

sudo docker ps #列出当前的containers sudo docker-compose down&&sudo docker-compose up -d #先停止并移除,再创建并启用 sudo docker-compose build --pull # build、rebuild,有些情况下不需要用这步

2.4 设置nginx代理(需要域名,并在托管商处申请到SSL证书)

我的域名托管在cloudflare故以它为例,先添加一个DNS的A记录,名称我设置的是bitwarden,以后就通过bitwarden.yourdomain.com访问bitwarden服务。

之后在SSL/TLS选项中的边缘证书可以申请一个,保存好cert.pem和cert.key文件。

安装nginx,并进入配置文件夹,将之前获得的cert.pem和cert.key复制到/etc/nginx中。

sudo apt-get install nginx; cd /etc/nginx; 在/etc/nginx/conf.d/中新建default.conf,并编辑: sudo vim /etc/nginx/conf.d/default.conf;

加入如下内容:(更多配置请参考官方文档)

# bitwarden # 需要改的地方已用注释标出 server { listen 443 ssl http2; server_name yourdomain.com; #这里改成自己的域名(之前DNS解析了的) client_max_body_size 128M; ssl on; ssl_certificate cert.pem; #之前获得的SSL证书 ssl_certificate_key cert.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8080; #这里8080对应前面docker-compose里的设置,127.0.0.1代表本机ip 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; } location /notifications/hub { proxy_pass http://127.0.0.1:8081; #8081也对应前面设置 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /notifications/hub/negotiate { proxy_pass http://127.0.0.1:8080; #8080对应前面设置 } # Optionally add extra authentication besides the AUTH_TOKEN # If you don't want this, leave this part out location /admin { # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/ auth_basic "Private"; auth_basic_user_file /path/to/htpasswd_file; 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; proxy_pass http://127.0.0.1:8080; #8080对应前面设置 } } 2.5 定时备份数据

需要先配置好github环境,用私钥免密码登录github(我把这一步写成了一个脚本,方便自己在别的机器上配置。)由于github配置因人而异、比较个性化,需要参考的话可以在My_vimrc仓库找到。我习惯保管好一对密钥,免得每次都要重新生成;关于非对称加密知识可以参考我之前的post。

先建立远程备份仓库并和本地绑定。

cd ~/bitwarden/bw-data #改成自己bitwarden所在位置 git init git remote add origin [email protected]:xxxx/xxxx.git #自己在github建的空仓库,这里用SSH进行clone git add -A git commit -m "first push" git push -u origin master 建立定时上传github的脚本,备份bw-data文件夹。 cd ~ sudo timedatectl set-timezone Asia/Shanghai; #修改系统时区 cat >> backUp_Bitwarden.sh bt.cron; crontab bt.cron; rm -rf bt.cron; crontab -l; #查看是否设置成功 3 Webdav,同步Zotero文献

以前都是用坚果云存Zotero里的文献,方便在多设备同步。但随着文献数量越来越多,自己又经常做一些标注、修改,坚果云的免费空间已经完全不够用了,遂在VPS上搭一个webdav服务来存文献。

3.1 docker-compose文件配置

Webcam搭建起来很简单,只需要一个docker-compose.yml文件就行了,我选择在~/webdav建立服务:

version: '3' services: webdav: image: bytemark/webdav restart: always ports: - "8082:80" environment: AUTH_TYPE: Digest USERNAME: yourname #用户名 PASSWORD: yourpasswd #密码 volumes: # :左边为数据保存路径 - /srv/dav:/var/lib/dav 3.2 Zotero软件设置 运行sudo docker-compose up -d后访问http://vps_ip:8082,应该会跳出如下弹窗,说明配置成功。

打开Zotero,编辑-首选项-同步-文件同步-使用WebDAV,填入地址、用户名和密码,点击验证服务器,会提示创建zotero文件夹,之后验证成功后就可以愉快地同步了~

注意,这个webdav是为内存比较小的VPS准备的,如果还要装nextcloud的话就没必要用这个了(nextcloud自带webdav,主页面左下角点击就是地址,账号密码输入nextcloud设置的admin用户就行)。

4 Nextcloud,私人网盘

Nextcloud是一套用于创建网络硬盘的客户端-服务器软件。其功能与Dropbox相近,但Nextcloud是自由及开放源代码软件,每个人都可以在私人服务器上安装并运行它。

4.1 docker-compose文件配置

文件夹结构如下:

~/nextcloud ├── app │ └── Dockerfile ├── db.env ├── docker-compose.yml └── web ├── Dockerfile └── nginx.conf

下面贴出每个文件的内容:

docker-compose.yml version: '3' # 运行后数据储存在/var/lib/docker/volumes下的nextcloud_db和nextcloud_nextcloud文件夹下 services: db: image: mariadb command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW restart: always volumes: - db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD= #这里需要填入要设定的初始密码 env_file: - db.env redis: image: redis:alpine restart: always # command: redis-server --requirepass 123456 #这里的123456和后面redis密码对应,没啥用(为了解决部署后日志中一个bug); # 这一项设置后会拖慢上传速度,故取消 app: #image: nextcloud:fpm-alpine build: ./app restart: always volumes: - nextcloud:/var/www/html environment: REDIS_HOST: redis # REDIS_HOST_PASSWORD: 123456 #和前面对应,值不重要 # 这一项设置后会拖慢上传速度,故取消 MYSQL_HOST: db env_file: - db.env depends_on: - db - redis web: build: ./web restart: always ports: - 8083:80 #设置访问端口 volumes: - nextcloud:/var/www/html:ro depends_on: - app cron: image: nextcloud:fpm-alpine restart: always volumes: - nextcloud:/var/www/html entrypoint: /cron.sh depends_on: - db - redis volumes: db: nextcloud: db.env: MYSQL_PASSWORD= MYSQL_DATABASE=nextcloud MYSQL_USER=nextcloud NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.tdbrywwwcg.xyz

这里的密码和docker-compose.yml里要一致,USER随便起,NEXTCLOUD_TRUSTED_DOMAINS填自己的域名,后面配置代理。

app/Dockerfile FROM nextcloud:fpm-alpine RUN set -ex; \ \ apk add --no-cache \ ffmpeg \ imagemagick \ procps \ samba-client \ # libreoffice \ ; RUN set -ex; \ \ apk add --no-cache --virtual .build-deps \ $PHPIZE_DEPS \ imap-dev \ krb5-dev \ openssl-dev \ samba-dev \ bzip2-dev \ ; \ \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl; \ docker-php-ext-install \ bz2 \ imap \ ; \ pecl install smbclient; \ docker-php-ext-enable smbclient; \ \ runDeps="$( \ scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ | tr ',' '\n' \ | sort -u \ | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ )"; \ apk add --virtual .nextcloud-phpext-rundeps $runDeps; \ apk del .build-deps

配置这部分是为了之后在nextcloud里挂载Onedrive、GoogleDrive这些外部储存,需要用到smbclient等套件;很多教程没有这部分,而是通过安装好后再输入几个命令去配置、显得比较麻烦。

web/nginx.conf和web/Dockerfile

nextcloud直接在docker里配置了nginx代理,不需要再在/etc/nginx中加,而且对新手来说内容比较复杂,故照搬example里的就行了。

4.2 个人建议 建立好上面的几个文件就可以构建了(国内的vps下载速度慢、可能要花很久)。 sudo docker-compose build --pull; sudo docker-compose up -d;

访问http://vps_ip:8083,不出意外应该能显示登录页面了。

如果不是对nginx很熟悉,非常不推荐设置nextcloud的反向代理。因为自己设置好后虽然能访问,很经常出现各种bug:上传错误、图标不显示、网址链接错误…

踩了上面说的这些坑之后我也看了很多别人的设置,但仍未找到比较完美的解决方案,但一想不配置http、https也能用,只是网址比较难看而已,最终选择了妥协。

5 Sharelist,分享工具

ShareList 是一个易用的网盘工具,支持快速挂载 GoogleDrive、OneDrive ,可通过插件扩展功能。它的优点体现在支持的网盘种类比较多,而且配置一次后只要拷贝配置文件就可以很方便在不同机器上部署。

5.1 部署服务cd ~ git clone https://github.com/reruin/sharelist && cd sharelist vim docker-compose.yml

docker-compose.yml中可修改端口,之后一样运行sudo docker-compose up -d

version: "3" services: sharelist: image: reruin/sharelist volumes: - $HOME/sharelist:/sharelist/cache ports: - "8084:33001" #我把sharelist放在8084端口 覆盖配置文件(可选)。

如果之前用过sharelist、现在只是换了个机器部署的话,只需要拷贝覆盖目录中的config.json

5.2 nginx代理配置

在/etc/nginx/conf.d/default.conf中加入如下内容:

# sharelist server { listen 443 ssl http2; server_name yourdomain.com; #填入自己的域名 # Specify SSL config if using a shared one. #include conf.d/ssl/ssl.conf; # Allow large attachments ssl on; ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8084; #设置的sharelist端口 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; proxy_set_header Range $http_range; proxy_set_header If-Range $http_if_range; proxy_no_cache $http_range $http_if_range; } } 6 Aria2,下载利器

Aria2是一款自由、跨平台命令行界面的下载管理器,该软件根据GPLv2许可证进行分发。支持的下载协议有:HTTP、HTTPS、FTP、Bittorrent和Metalink。

我用的是P3TERX大佬的Aria2-ProDocker镜像,安装很简单:由于Aria2只是个命令行,是否安装好了没法直接看出来,需要配置服务端并能连接成功才算成功了第一步;接着下载一个种子试试就知道了。

6.1 服务端安装cd ~ git clone https://github.com/P3TERX/Docker-Aria2-Pro && cd Docker-Aria2-Pro; # 把改成要设置的密码 sudo docker run -d \ --name aria2-pro \ --restart unless-stopped \ --log-opt max-size=1m \ -e PUID=$UID \ -e PGID=$GID \ -e RPC_SECRET= \ -e RPC_PORT=6800 \ -p 6800:6800 \ -e LISTEN_PORT=6888 \ -p 6888:6888 \ -p 6888:6888/udp \ -v ~/aria2-config:/config \ -v ~/downloads:/downloads \ p3terx/aria2-pro

安装好后可以在~/aria2-config文件夹修改配置。

6.2 AriaNg, web客户端

下载一个AriaNg的html文件,连接上服务端就可以开始用了。

7 Zdir,目录列表

Zdir是一款使用PHP开发的目录列表程序,无需数据库,体积小巧,功能完善。

我一般用它直接访问Aria2下载好的文件,部署也很简单:

下载一键安装脚本,按照说明来配置。

zdir文件夹里修改相关模板文件。(懂一点html知识就行)

nginx代理配置:

#zdir server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:1080; #zdir端口,可以通过改脚本修改 proxy_redirect off; proxy_set_header Host $host; client_max_body_size 50m; client_body_buffer_size 256k; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 200m; } location ~ .*\.(js|css|woff|woff2|gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)?$ { proxy_pass http://127.0.0.1:1080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; expires 7d; access_log off; } } 8 frp,NAS内网穿透8.1 win10虚拟机上安装黑群晖

具体安装步骤和文件我传到了Nextcloud里,这里注意虚拟机的网络一定要设置成桥接模式,原理可以参照这张路由器的图来说明:当选择非桥接模式时虚拟机相当于上面的路由器2,其处在win10主机派生出的局域网下,而win10主机和其他同一WIFI下的设备处于同一个上级局域网中,上级网络无法访问下级网络。同样外网设备(不在路由器1的局域网下)也无法直接访问到NAS,常见的解决方法有两个:

路由器1改成桥接模式,并设置端口转发;这种方式要求要有公网IP、并且路由器改模式可能需要向运营商申请,总的来说很麻烦。 内网穿透,需要一个VPS和域名,利用VPS作为中转服务器将两个客户端相连。比较常用的内网穿透工具是国人开发的frp。 8.2 内网访问NAS

在win10中通过cmd的ipconfig获取到本机ip,如果前面设置正确,同一局域网下的其他设备应该能通过http://win10_ip:5000访问到NAS主页(具体端口参考群晖官网)。

## client(客户端)frpc配置## server(服务端)frps配置 ~

8.3 内网穿透从入坑到放弃

frp的配置分为客户端和服务端,客户端(也就是黑群晖)可以开一个docker运行frpc,服务端(VPS)开一个screen运行frps,当然前提是写好配置文件。说下我踩到的坑吧,第一天配置挺好可以正常访问、Nginx代理文件都写好了。结果第二天不知怎么的各种http proxy EOF错误,怎么改都弄不好,折腾了一个下午最终放弃了。

9 yobot,手游机器人

yobot 是为公主连接公会战设计的辅助机器人,能够帮助公会战管理者提供自动化管理服务。 yobot 提供了群聊、web 页面两套用户交互方式,具有操作便捷、通知及时、数据详细的特点。 基于 QQ 的部分已不再支持,本项目正在向其他平台迁移

按照官网上的Linux-Mirai部署方式一步步来就行,注意QQ号必须先在VPS上登录并挂几天、不然容易被封或被屏蔽消息。

以下内容更新于2020-08-07 14:19:12

10 Calibre-web,个人书库10.1 介绍

最近开始用Calibre整理书籍了,之前都是下载一本、往ipad里一丢、看完就不管了(有时随手就删了),导致想翻一翻之前看过的书都找不到地方; 并且因为自己在日亚买的正版书有版权限制,只能用注册过的kindle看,不方便管理。Calibre这款软件能很好解决我的需求:

可以搜索书籍的元数据,整理起来很方便轻松。 DeDRM插件能去除版权限制,可以将书籍转为epub等主流格式方便非kindle阅读器查看。 结合Calibre-web,搭建线上图书馆(相比于桌面版增加了一些功能,也更便于分享)。 10.2 VPS中用docker-compose安装

建一个books(名称随意)文件夹并进入;

建立一个docker-compose.yml文件,内容如下:

version: "3" services: calibre-web: # 体验后还是这个image最好用 image: technosoft2000/calibre-web container_name: calibre-web environment: - PUID= 1000 #run `id` in shell to get id for a user - PGID= 1000 - SET_CONTAINER_TIMEZONE= true - CONTAINER_TIMEZONE= Asia/Shanghai volumes: - ./calibre:/books #存放书籍和app.db等数据库 # 我喜欢全放一个文件夹,方便管理 - ./calibre-web/app:/calibre-web/app - ./calibre-web/kindlegen:/calibre-web/kindlegen - ./calibre-web/config:/calibre-web/config ports: # 左边为外部端口,不要和其他服务冲突就行 - "8085:8083" restart: always

运行sudo docker-compose up -d,访问http://vps_ip:8085,在web中初始化、路径输入/books。

若输入后报错则是文件夹权限的问题,我一般用sudo chmod -R 777 *这种粗暴的方式解决。

10.3 群晖NAS中用docker安装

映像中搜索calibre-web,找到technosoft2000/calibre-web并下载;

创建容器-高级设置-启动自动重新启动、卷-添加文件夹如下:

运行状态可在详情-终端机中查看(拉去github资源需要一段时间);

进入web配置,出错则检查http用户是否对文件夹具有完全控制权限。

10.4 备份

书籍的所有数据都在docker内的/books文件夹下(即外部的pathTo/books/calibre),其中metadata.db、metadata_db_prefs_backup.json以及书籍文件夹是和桌面版calibre软件互通的,也就是可以互相拷贝覆盖。app.db、gdrive.db记录了calibre-web上的一些操作(如书架设置、用户名和密码、googleDrive设置),需要将服务迁移到另一台机器上时记得备份这些文件。

以下内容更新于2020-11-13 23:22:02

11 Leanote,私有云笔记

蚂蚁笔记虽然几年前就已经没更新了,但基本的功能挺全的,作为私有云笔记用起来没啥问题。我尝试了一个多月感觉还行,支持markdown、可以传图片、IOS下也有app、网页就能直接访问、备份方便…总之个人强力推荐吧,看了一些其他支持私人部署的笔记平台也都差不多的样。

我用的是docker部署的方式,比较无脑,而且这个仓库是大佬整合制作的镜像,有不同版本可供选择(视vps配置),反正我512M内存祖传vps运行完全版Leanote也毫无压力。

12 FileRun,私人网盘

与之前的Nextcloud相比,FileRun私人网盘体积更加轻盈,部署起来没有那么多糟心的坑,也支持Webdav,适合部署在低配的机器上,只是传一传小文件(抱歉、低配硬盘根本不够用)、用webdav同步下一些app的数据(如OmniFocus之类的)。

配置过程及其简单,官网https://docs.filerun.com/docker里说的明明白白,顶多改一改volumes方便换vps时同步数据、或者改一改文件夹权限之类的,不像nextcloud真的是各种错误(虽然nextcloud的功能确实强大、加上各种插件、社区也很活跃)。

13 删去一些不必要的服务

用了一段时间后清理了一些平时基本不怎么用的服务,最后只留下Bitwarden、Leanote、和FileRun,别的比如nextcloud、Aria2、Calibre-web放到了我的群晖NAS(越用越香)上,最近手头有点紧,能省则省吧(最终还是不肯放弃bandwagon的祖传小鸡、被自己啪啪打脸)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3