首页
关于我们
友链链接
壁纸下载
更多
统计中心
图床上传
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,443 阅读
2
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,158 阅读
3
N1教程:Openwrt安装docker webui界面(基于flippy openwrt n1固件)
5,174 阅读
4
ZFAKA小店Docker版之 数据的备份和迁移
4,995 阅读
5
甲骨文oracle ARM 重装 Debian 10
4,671 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
登录
Search
标签搜索
vps
linux
bench
typecho
empirecms
lnmp
nginx
centos
cloudflare
qbittorrent
ssl
n1
rclone
onedrive
google
storage
speedtest
v2ray
openwrt
301
V+变量
累计撰写
173
篇文章
累计收到
45
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
页面
关于我们
友链链接
壁纸下载
统计中心
图床上传
搜索到
43
篇与
的结果
2024-12-17
来尝试无限容量,可以webdav挂载的teldrive吧!
0 前言两个月前偶然间看到telegram团队做了一个网盘叫teldrive,据说是可以无限存储的网盘,且可以webdav挂载到本地,于是部署到了服务器上,但当时没有写博客记录,最近空闲了决定补一下博客。1 teldrive介绍teldrive仓库地址 teldrive是一个通过telegram账号登陆后存储到私人账户空间的一个网盘空间,类似于google drive和onedrive特点如下数据很安全,官方保证存储数据不会丢失可以webdav挂载到本地无限容量上传下载速度取决于你的服务器链接至telgram服务器的速度缺点是无法直链共享,共享需要走自己的服务器流量这里可以看到这个url指向本地ip,需要公网环境才可以共享2 部署teldrive根据teldrive官方仓库的指引即可本文采取docker-compose部署的方式填写配置信息首先创建并填写config.toml创建config,根据提示填写数据库地址,secret即可数据库地址比较容易理解,secret则是可以通过openssl rand -hex 64生成,或者通过官方的vercel app链接一键获取这里可能会比较疑惑的是app-id和app-hash其实app-id和app-hash是telegram的api相关密钥telegram 获取api密钥根据英文指引即可获得,这里不再赘述特别提示:如果你部署在国内本地服务器,那你需要在[tg]下添加proxy选项最终我的配置是这样的[db] data-source = "postgres://postgres:xxx@postgres_db:5432/teldrive" [jwt] secret = "xxxxxxx" [tg] app-id = "xxxx" app-hash = "xxxxxxxxxxxxxxxxxxxxxxxx" proxy = "http://192.168.50.171:10809"填写docker-compose我的docker-compose.yml经供参考在同一文件夹下创建docker-compose.ymlvim docker-compose.yml填入如下内容services: teldrive: image: ghcr.io/tgdrive/teldrive restart: always container_name: teldrive ports: - '8080:8080' volumes: - ./config.toml:/config.toml - ./session.db:/session.db networks: - teldrive postgres_db: image: ghcr.io/tgdrive/postgres:17-alpine container_name: postgres_db restart: always networks: - teldrive environment: - POSTGRES_PASSWORD=xxxxxxxxx - POSTGRES_DB=teldrive volumes: - postgres-data:/var/lib/postgresql/data volumes: postgres-data: networks: teldrive: external: true注意这里POSTGRES_DB和POSTGRES_PASSWORD环境信息需要修改为同刚才config.toml相同的配置,如我的配置[db]data-source = "postgres://postgres:xxx@postgres_db:5432/teldrive"这里postgres://代表协议对接postgresql数据库冒号前则是用户名冒号后面的xxx则是密码@后面就是访问终结点,postgres_db,可以看作是ip5432则是端口,这里是默认没有改/teldrive代表访问的数据库是teldrive其实就是数据库的标准url访问i形式://:@:<port(optional)>/<database_name>顺带一提halo博客用的springboot,链接mysql的话也一个格式mysql://twoonefour:xxx@127.0.0.1/halo题外话扯远了,配置完docker-compose.yml后,这里还需要一个session.db文件,创建一下就可以开启容器了touch session.dbdocker-compose up -d之后可以尝试访问http://localhost:8080对接rclone使用webdavrclone是一个开源的用于挂载盘到本地的一个开源软件github仓库地址但这里teldrive是不能使用开源的rclone的,坑死我了teldrive需要使用telegram团队魔改的版本需要使用魔改版本需要使用魔改版本魔改teldrive 仓库地址直接从release下载下来即可使用下载完以后创建文件配置,位于~/.config/rclone/rclone.conf[teldrive]type = teldriveapi_host = http://localhost:8080 # default hostaccess_token = #session token obtained from cookieschunk_size = 500Mupload_concurrency = 4encrypt_files = false # Enable this to encrypt files make sure encryption key is not empty in teldrive config file.random_chunk_name= true # Use random chunk names when uploading files to channel instead of original filename.需要动脑筋的是access_token,在teldrive登陆以后,在控制台cookie中获取user-session就是access_tokenuser-session就是access_token复制这个值填上就可以了其他的根据需要填写填完以后就可以运行了,我的命令示例如下rclone mount teldrive:/ /volume3 \--vfs-cache-mode full \--vfs-cache-max-age 72h \--vfs-cache-poll-interval 5m \--vfs-cache-max-size 15G \--dir-cache-time 200h \--cache-dir /opt/rclonecache这里我是挂载到/volume3下的其他参数请看文档rclone文档自动挂载请参照官方文档自动挂载 rclone-as-unix-mount-helper我这里给出我的方案,我是使用的systemdvim /usr/lib/systemd/system/rclone.service填入以下内容[Unit]Description=Rclone webdavAfter=network.target[Service]User=rootNice=1RestartSec=5Restart=alwaysSuccessExitStatus=0 1ExecStart=rclone mount teldrive:/ /volume3 --vfs-cache-mode full --vfs-cache-max-age 72h --vfs-cache-poll-interval 5m --vfs-cache-max-size 15G --dir-cache-time 200h --cache-dir /opt/rclonecache[Install]WantedBy=multi-user.target接着素质二连即可启动systemctl daemon-reloadsystemctl start rclone之后就能同普通文件夹一样,访问/volume3就是访问远程,使用cp命令,mv命令都可以,看你的脑洞要如何运用了顺带一提我的nas就是整个备份到了teldrive里,可以看到我已经用了1T空间了.原文地址 原文地址 至此搭建结束,enjoy
2024年12月17日
25 阅读
0 评论
0 点赞
2024-12-15
PY的vps成本管理器简单代码
一直以来,本人有个痛点,就是手持太多vps。有月付的,年付的,半年的,季付的。 各种结算货币。完全无统一标准。导致财务管理困难。所以就诞生了这个工具简单易用,只需要把如下代码保存到任意.py文件并且在cmd运行即可。python xx.py程序会自动在相同目录创建vps_cost_config.json文件用作数据存储。感谢:chatgptimport tkinter as tk from tkinter import messagebox, ttk # 引入 ttk 组件,界面更美观 import json # =============== 配置文件相关 =============== CONFIG_FILE_PATH = "vps_cost_config.json" default_exchange_rates = {'USD': 1, 'CNY': 7.1, 'EUR': 0.85} def load_config(): try: with open(CONFIG_FILE_PATH, 'r') as file: return json.load(file) except FileNotFoundError: return {'exchange_rates': default_exchange_rates, 'vps_list': []} def save_config(config): with open(CONFIG_FILE_PATH, 'w') as file: json.dump(config, file, indent=4) # =============== 功能函数 =============== def update_exchange_rates(): try: exchange_rates = {currency: float(var.get()) for currency, var in currency_rate_vars.items()} config['exchange_rates'] = exchange_rates save_config(config) update_vps_list() update_monthly_costs() messagebox.showinfo("成功", "汇率已更新并保存。") except ValueError: messagebox.showerror("错误", "请输入有效的数字汇率。") def add_vps(): try: name = vps_name_var.get() amount = float(amount_var.get()) vps = { 'name': name, 'payment_cycle': payment_cycle_var.get(), 'amount': amount, 'currency': currency_var.get() } config['vps_list'].append(vps) save_config(config) update_vps_list() clear_vps_fields() update_monthly_costs() except ValueError: messagebox.showerror("错误", "请输入有效的费用。") def delete_vps(): selected = vps_listbox.curselection() if not selected: messagebox.showerror("错误", "请选择一个 VPS 项目删除。") return selected_name = vps_listbox.get(selected).split(' ')[0] config['vps_list'] = [v for v in config['vps_list'] if v['name'] != selected_name] save_config(config) update_vps_list() update_monthly_costs() def update_vps_list(): vps_listbox.delete(0, tk.END) for vps in config['vps_list']: vps_listbox.insert(tk.END, f"{vps['name']} ({vps['payment_cycle']}) - {vps['amount']} {vps['currency']}") def update_monthly_costs(): monthly_costs, total_cost = calculate_monthly_cost(config['vps_list'], config['exchange_rates']) monthly_cost_display.config(state="normal") monthly_cost_display.delete("1.0", tk.END) max_name_length = max(len(name) for name in monthly_costs.keys()) # 获取最长名字长度 separator = '-' * 40 # 分隔符 for name, cost in monthly_costs.items(): # 价格右对齐,名字用固定宽度 formatted_line = f"{name.ljust(max_name_length)} | {str(cost).rjust(8)} CNY\n" monthly_cost_display.insert(tk.END, formatted_line) monthly_cost_display.insert(tk.END, f"{separator}\n") monthly_cost_display.insert(tk.END, f"{'月度总成本'.ljust(max_name_length)} | {str(total_cost).rjust(8)} CNY") monthly_cost_display.config(state="disabled") def calculate_monthly_cost(vps_list, rates): total_cost = 0.0 costs = {} for vps in vps_list: amount = vps['amount'] / {'annual': 12, 'semi-annual': 6, 'quarterly': 3, 'monthly': 1}[vps['payment_cycle']] cost = round(amount * rates.get(vps['currency'], 1), 2) costs[vps['name']] = cost total_cost += cost return costs, round(total_cost, 2) def clear_vps_fields(): vps_name_var.set("") amount_var.set("") payment_cycle_var.set("annual") currency_var.set("USD") # =============== 主窗口与布局 =============== root = tk.Tk() root.title("VPS 成本管理") root.geometry("900x600") # 窗口大小 config = load_config() # =========== 左侧:汇率设置 =========== left_frame = tk.LabelFrame(root, text="汇率设置", padx=10, pady=10) left_frame.pack(fill="y", side="left", padx=10, pady=10) currency_rate_vars = {} for idx, (currency, rate) in enumerate(config['exchange_rates'].items()): tk.Label(left_frame, text=f"{currency} 汇率:").grid(row=idx, column=0, sticky="e", pady=5) rate_var = tk.StringVar(value=str(rate)) currency_rate_vars[currency] = rate_var tk.Entry(left_frame, textvariable=rate_var, width=10).grid(row=idx, column=1, pady=5) tk.Button(left_frame, text="更新汇率", command=update_exchange_rates).grid(columnspan=2, pady=10) # =========== 中间:VPS 管理 =========== middle_frame = tk.LabelFrame(root, text="VPS 管理", padx=10, pady=10) middle_frame.pack(fill="both", expand=True, side="left", padx=10, pady=10) vps_name_var, amount_var = tk.StringVar(), tk.StringVar() payment_cycle_var, currency_var = tk.StringVar(value="annual"), tk.StringVar(value="USD") # 输入框 tk.Label(middle_frame, text="名称:").grid(row=0, column=0, sticky="e") tk.Entry(middle_frame, textvariable=vps_name_var).grid(row=0, column=1, pady=5) tk.Label(middle_frame, text="费用:").grid(row=1, column=0, sticky="e") tk.Entry(middle_frame, textvariable=amount_var).grid(row=1, column=1, pady=5) tk.Label(middle_frame, text="周期:").grid(row=2, column=0, sticky="e") ttk.Combobox(middle_frame, textvariable=payment_cycle_var, values=["annual", "semi-annual", "quarterly", "monthly"]).grid(row=2, column=1) tk.Label(middle_frame, text="货币:").grid(row=3, column=0, sticky="e") ttk.Combobox(middle_frame, textvariable=currency_var, values=["USD", "CNY", "EUR"]).grid(row=3, column=1) tk.Button(middle_frame, text="添加 VPS", command=add_vps).grid(columnspan=2, pady=10) # 列表框 vps_listbox = tk.Listbox(middle_frame, width=45, height=15) vps_listbox.grid(row=5, columnspan=2, pady=10) tk.Button(middle_frame, text="删除选中", command=delete_vps).grid(columnspan=2, pady=5) # =========== 右侧:成本展示 =========== right_frame = tk.LabelFrame(root, text="每月成本", padx=10, pady=10) right_frame.pack(fill="y", side="right", padx=10, pady=10) monthly_cost_display = tk.Text(right_frame, width=42, height=40, state="disabled") monthly_cost_display.pack() # 初始化显示 update_vps_list() update_monthly_costs() root.mainloop()
2024年12月15日
12 阅读
0 评论
0 点赞
2024-12-04
Centos安装PT下载工具系列——qBittorrent
一.介绍如果问起在Windows上用什么软件下载BT或是PT,那么我觉得可能大部分人都会说是uTorrent,简单易用速度还快,这就是uTorrent受欢迎的原因,但是,在Linux平台上的uTorrent就不是这么回事了。所以qBittorrent打出了uTorrent替代品的旗号,虽然可能还有很远的路要走,但是它确实有不少可取之处。二.安装qBittorrent在Linux上有GUI模式以及WebGUI模式,我肯定是选择后者的,毕竟服务器大多不装界面,节省资源。下面就来说一下怎么装1.还是先得装libtorrent,这个是rasterbar版本,之前deluge我是懒得装了,这儿没办法,还得装,研究了下,真的是神坑,我从下午研究到了晚上才把这堆坑全填了,网上教程要么太老,要么全是ubuntu的,简直感人肺腑,甚至我这部分的教程写了删删了写来来回回好几次。yum groupinstall 'Development Tools' -y yum install centos-release-scl -y yum install openssl-devel qt5-qtbase-devel qt5-linguist devtoolset-3-toolchain -y yum remove boost* -y wget -O /etc/yum.repos.d/enetres.repo http://repo.enetres.net/enetres.repo sed -i "s/^enabled = 1/enabled = 0/g" /etc/yum.repos.d/enetres.repo yum install --enablerepo=enetres boost-devel scl enable devtoolset-3 bash cd /opt/ wget https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_1_4/libtorrent-rasterbar-1.1.4.tar.gz tar xzf libtorrent-rasterbar-1.1.4.tar.gz cd libtorrent-rasterbar-1.1.4 CXXFLAGS="-std=c++11" ./configure --disable-debug --prefix=/usr make && make install ln -s /usr/lib/pkgconfig/libtorrent-rasterbar.pc /usr/lib64/pkgconfig/libtorrent-rasterbar.pc ln -s /usr/lib/libtorrent-rasterbar.so.9 /usr/lib64/libtorrent-rasterbar.so.9...PS.吐槽时间boost这边是坑之一,自己编译各种出问题,所以我翻来翻去找到了这个源,能直接用真好c++11也是坑之一,因为libtorrent的某个参数是GCC新版本的,相对老版本改了名字,所以老版本要改动才能用,但是老版本GCC在qBittorrent那边出问题了,所以索性从头就用高版本GCC。但是!!!因为默认没添加这个参数,会导致qBittorrent那边最后link错误,找了半天才找到这个解决办法反正我坑全踩了,你们直接复制粘贴就能跑通参考:①. https://github.com/qbittorrent/qBittorrent/issues/5265②. https://ermahgerdlernux.wordpress.com/2015/07/20/installing-qbittorrent-on-centos-6-6-64bit/2.现在可以开始装qBittorrent了,请务必保持在高版本GCC的环境中,如果退出了请重新运行上面的scl命令cd /opt/ wget -O qBittorrent-release-3.3.11.tar.gz https://github.com/qbittorrent/qBittorrent/archive/release-3.3.11.tar.gz tar xzf qBittorrent-release-3.3.11.tar.gz cd qBittorrent-release-3.3.11 ./configure --prefix=/usr --disable-gui gmake && make install...不出意外的话这儿就没问题了,然后你会得到qbittorrent-nox下面我们加个启动脚本方便运行管理cat >/etc/init.d/qbittorrent<<'EOF' #!/bin/sh # # chkconfig: - 80 20 # description: qBittorrent headless torrent server # processname: qbittorrent-nox # # Source function library. . /etc/init.d/functions QBT_USER="qbittorrent" QBT_LOG="/var/log/qbittorrent.log" prog=qbittorrent-nox args="" RETVAL=0 start() { if [ -x /etc/rc.d/init.d/functions ]; then daemon --user $QBT_USER $prog $args else su - $QBT_USER -c "$prog $args" > /var/log/qbittorrent.log & fi echo -n $"Starting qBittorrent: " RETVAL=$? [ $RETVAL = 0 ] && success || failure echo return $RETVAL } status() { qbstatus=`ps ax|grep $prog|grep -v grep` if [ "$qbstatus" = "" ]; then echo "qBittorrent is stopped !" else echo "qBittorrent is running !" fi } stop() { echo -n $"Stopping qBittorrent: " killall qbittorrent-nox success echo } case "$1" in start) start ;; stop) stop ;; status) status ;; restart|reload) stop sleep 2 start ;; *) echo "Usage: $0 {start|status|stop|restart|reload}" exit 1 esac exit $RETVAL EOF chmod +x /etc/init.d/qbittorrent chkconfig --add qbittorrent chkconfig qbittorrent on groupadd qbittorrent useradd qbittorrent -g qbittorrent...然后你就能直接运行了访问http://IP:8080/ 就能看到WebGUI了默认用户名是admin,密码是adminadmin如果要修改端口请在上方启动脚本中的args后面添加--webui-port=XXXX
2024年12月04日
21 阅读
0 评论
0 点赞
2024-12-04
如何挂PT和BT: Ubuntu安装qBittorrent webui (qbittorrent-nox)
1.添加源sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable sudo apt update2.安装成功添加源后,更新包的信息,再安装qBittorrent webui:sudo apt install qbittorrent-nox3.启动成功安装后,输入以下命令启动软件:qbittorrent-nox启动后,在浏览器中输入http://ip地址:8080,即可打开qBittorrent的网页端。默认的用户名是admin,默认密码为adminadmin。如果要使用其他端口,只需在启动命令中加入--webui-port=XXXX参数,其中XXXX为端口号:qbittorrent-nox --webui-port=XXXX4.设置开机自启动在 /etc/systemd/system 下,新建文件 qbittorrent-nox.service ,vim /etc/systemd/system/qbittorrent-nox.service内容如下[Unit] Description=qBittorrent-nox After=network.target [Service] User=root Type=forking RemainAfterExit=yes ExecStart=/usr/bin/qbittorrent-nox -d [Install] WantedBy=multi-user.target再执行以下命令:systemctl enable qbittorrent-nox下一次开机时会自动启动qbittorent。如果要手动开启、停止和重启,参考以下命令:sudo service qbittorrent-nox start sudo service qbittorrent-nox stop sudo service qbittorrent-nox restart配置QBittorrent webui的配置文件qBittorrent.conf在~/.config/qBittorrent/文件夹中。更多命令启动 qbittorrent-nox 后台启动 qbittorrent-nox -d 查看版本 qbittorrent-nox -v 获得帮助 qbittorrent-nox -h
2024年12月04日
21 阅读
0 评论
0 点赞
2024-12-04
Linux开启bbr的第2种方法
1.修改系统变量echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf2.保存生效sysctl -p3.查看内核是否已开启BBRsysctl net.ipv4.tcp_available_congestion_control4.显示以下即已开启:# sysctl net.ipv4.tcp_available_congestion_control net.ipv4.tcp_congestion_control = bbr5.查看BBR是否启动lsmod | grep bbr6.显示以下即启动成功:# lsmod | grep bbr tcp_bbr 20480 14
2024年12月04日
19 阅读
0 评论
0 点赞
1
...
3
4
5
...
9