WSL设置代理

由于许多数据集下载命令需要Linux环境,而平时工作使用Windows设备,服务器设置代理又不方便,因此在Windows上通过WSL安装Linux子系统,并利用宿主机的系统代理使子系统能够访问公网。

安装WSL

Windows Subsystem for Linux(WSL)允许直接在Windows上运行GNU/Linux环境。
通过Microsoft Store下载,例如搜索Ubuntu,安装即可。
安装后,子系统的文件系统可直接访问:

WSL文件系统在宿主机访问

设置WSL代理

初次运行时,需要设置账号密码,然后保存文件.proxyrc

#!/bin/bash
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:10809"
export https_proxy="http://$host_ip:10809"
export http_proxy="http://$host_ip:10809"

其中端口10809仅为示意,需与宿主机的HTTP代理端口一致。

然后运行source .proxyrc

设置sudo环境

sudo命令默认不会继承环境变量。运行vim /etc/sudoers,在Defaults env_reset下方加入一行:

Defaults env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"

将Windows脚本转化为Unix脚本

出现类似scripts/download_dtu_ground_truth.sh: line 2: $'\r': command not found的问题,因为Windows的换行为\r\n,而Unix为\n

sudo apt update
sudo apt install dos2unix
sudo dos2unix [filepath]

至此设置完成。

Issues & Solve

Last Update: 21/11/20

CUDA out of memory

  • Kill dead processes;
# replace '*' with 0, 1, ..., find running $PID
lsof /dev/nvidia*
kill -9 $PID
  • reload Nvidia driver;
# Reload without rebooting
# close display management
systemctl isolate multi-user.target

# disable nvidia driver(if returns relying on xxx,rmmod them as well)
rmmod nvidia

# load nvidia driver
modprobe nvidia

# restart display management
systemctl start graphical.target

Or

sudo apt install nvidia-modprobe
  • Reboot.

Docker Run without Root

sudo chmod a+rw /var/run/docker.sock

Docker Nvidia Runtime

Install Nvidia Container Runtime

curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install nvidia-container-runtime

Modify Config

sudo vim /etc/docker/daemon.json
# /etc/docker/daemon.json
{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia"
}

Reload docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Mount WebDav as 777

sudo apt install davfs2
sudo mount -t davfs http://your-url-of-webdav/ /your/mount/point/path -o uid=$YOURUID,gid=$YOURGID,dir_mode=0777,file_mode=0777

Mount Disk as 777

# find target disk, like /dev/sda or /dev/sda1
sudo fdisk -l

# mount once. file permission is (777-umask)
sudo mount /dev/your-disk /your/mount/point/path -o umask=000

# mount as startup
# find $UID, like 3e395c6c-8e04-4bd6-93cd-1152fa797262
sudo blkid /dev/your-disk
sudo vim /etc/fstab
# /etc/fstab
# add line
UID=$UID /your/mount/point/path ext4 auto,exec,user,rw,umask=000 0 0

【整活】Tampermonkey插件-notranslate

插件安装地址:https://greasyfork.org/zh-CN/scripts/396736-notranslate-%E9%98%B2%E6%AD%A2chrome%E7%BF%BB%E8%AF%91%E4%BB%A3%E7%A0%81%E6%AE%B5%E5%92%8C%E5%85%AC%E5%BC%8F

未使用notranslate

使用notranslate

notranslate-防止chrome翻译代码段和公式

使用chrome翻译功能时经常把不必要的公式和代码段也翻译了,造成不必要的困扰?
该脚本用来为一些特定的公式和代码段添加”notranslate”样式类,以阻止翻译。
This script aims to prevent unnecessary translation of code segment and math equations.

How To Use如何使用

要使用该脚本,请在认为有需要的时候(比如页面加载完毕后,翻译之前)使用键盘ctrl+Q,然后确认。
请注意,需要在点击“翻译”之前进行操作。
To use this script, use the keyboard ctrl + Q when the page is ready (such as after the page is loaded and before translation), and then confirm.
Please note that you need to do this before clicking “Translate”.

Possible Problems可能的问题

由于脚本尚不完善,可能一些类型的内容未列入列表。您可以自己修改脚本的behaviorList
如果您愿意,请联系我更新脚本。通过GitHub或者mail
Because the script is not yet complete, some types of content may not be detected. You can modify the behaviorList of the script yourself.
If you like, please contact me to update the script. Via GitHub or mail.

【整活】WordPress+V2Ray+Caddy快速部署

因为ss梯子总是被墙屏蔽,换IP后短时间内即失效,尝试采用V2Ray方式降低检测风险。顺便利用WordPress搭建博客主页,既是站点伪装(也方便长期挖坑?)

总而言之这个博客就是在这样的情况下建立起来的。

成果

  • 不太容易被墙的梯子 (暂时)
  • 个人博客站点
  • 也可以很方便地部署其他站点

花费

  • VPS,约60$
  • 域名,约9$
  • 两小时左右操作时间

以上花费可供一年使用。

预备工作

  • 可用的境外VPS(可在Vultr,Hostwinds等VPS商处购买,约5$/mon)
  • 域名(供V2Ray伪装;方便博客访问;本站域名在NameSilo购买,约9$/year)
  • 基本动手能力

什么是WordPress

WordPress is open source software you can use to create a beautiful website, blog, or app.

WordPress是基于PHP的开源网页项目,可以方便地建设简单博客、个人主页等网站,并有许多美化主题与工具插件可供选择。

什么是V2Ray

V2Ray是近几年十分流行的网络工具,其功能强大,用途不限于突破防火墙,但因其能有效翻墙而广为人知。V2Ray有如下大放异彩的特点:

  • 开源。V2RayProject V的核心工具,源代码开源;
  • 多协议支持。传输层支持TCP、mKCP、WebSocket等,上层协议支持Socks、Shadowsocks、以及自定义的VMess等;
  • 多入口和多出口。V2Ray可同时支持多个入站和出站协议,每个协议独立工作;
  • 多平台支持。原生支持Windows、Linux、MacOS三大常用平台,安卓、iOS两大移动平台有丰富的第三方工具;
  • 隐蔽性。V2Ray流量可伪装成网页流量,更难被检测和干扰。

与另一个知名的翻墙工具Shadowsocks(R)相比,两者区别在于:

  1. V2Ray是一个框架/平台,而Shadowsocks(R)是一个代理工具;
  2. V2Ray功能强大配置复杂,Shadowsocks(R)简单易用;
  3. V2Ray性能更好,协议更完善。

一句话总结:V2Ray更好更强大,但更难上手和用好。

(V2Ray教程, tlanyan )

V2Ray部署

本文采用一键部署脚本进行部署,可根据OS与实际需要选择不同的部署脚本。如果服务器本身已经在运行服务,建议按照V2Ray相关文档手动部署。

脚本链接https://github.com/233boy/v2ray/tree/master,有详细步骤。本站采用的是WebSocket + TLS方式,同时将主站域名www.euclpts.com设置伪装网址为blog.euclpts.com,即博客。另设置分流路径。

在此之前,你需要在域名提供商处将域名解析到IP,同时SSH连接到服务器。

部署完成后,在本地PC上下载客户端进行连接。参考 https://tlanyan.me/v2ray-clients-download/

正确部署完成后,应当能够成功翻墙。访问主站域名,由于此时尚未部署WordPress,应无法显示。访问分流域名,显示bad request。

WordPress部署

在官网https://wordpress.org/可以查看最新版本的系统要求。一般来说,需要安装PHP与一种数据库。由于这里使用了Caddy作为代理,不需要额外安装Apache等。此处以Ubuntu 18.04为例。

安装PHP(以PHP7.1为例)

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.1-fpm php7.1-mcrypt php7.1-cli php7.1-xml php7.1-mysql php7.1-gd php7.1-imagick php7.1-recode php7.1-tidy php7.1-xmlrpc
sudo apt-get install libapache2-mod-php7.1

安装MySQL

sudo apt-get --purge remove mysql-server mysql-common mysql-client
sudo apt-get install mysql-server mysql-common mysql-client
sudo /etc/init.d/mysql restart

细节可参考 https://my.oschina.net/yingximu/blog/1931050

安装好相关依赖内容后,验证版本无误,进行WordPress安装。

安装WordPress

wget https://wordpress.org/latest.zip

解压到目标文件夹即可。然后进行数据库配置:

//登录进入数据库
mysql -u root -p

//创建数据库
CREATE DATABASE wordpress;

//创建管理员
CREATE USER wordpressusers;

//设置密码
SET PASSWORD FOR wordpressusers = PASSWORD("密码");

//设置权限
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressusers IDENTIFIED BY "密码";

//生效配置
FLUSH PRIVILEGES;

//退出数据库
exit

Caddy配置

修改Caddy配置文件,重启Caddy即可完成部署。详细可参考 https://blog.csdn.net/qq_33688651/article/details/94367789

vim /etc/caddy/Caddyfile
# /etc/caddy/Caddyfile
www.***.com {
    gzip
    tls ***@**.** # 邮箱
timeouts none
    proxy / https://blog.***.com {
        except /*** # 分流路径
    }
    proxy /*** 127.0.0.1:*** {
        without /***
        websocket
    }
}

blog.***.com {
    root /home/wwwroot/blog.***.com
    tls ***@**.**
    log /home/wwwroot/blog.***.com.log
    gzip
    limits 2000mb
    timeouts 5m
    fastcgi / /run/php/php7.3-fpm.sock php 
    rewrite {
        if {path} not_match ^\/wp-admin
        to {path} {path}/ /index.php?{query}
    }
}

import sites/*

保存退出。停止caddy,然后再次运行,

nohup caddy&

访问主页,已经能够看到WordPress的设置向导,并能够顺利翻墙,完成。