Code-Server搭建
如果有在平板上编辑代码的需求,可以试一试在服务器上搭建 Code-Server,完成后可在浏览器中编写代码。体验比商店里的大部分代码编辑器好很多。
下面使用 1panel 快捷搭建 Code-Server 服务,Auth2-Proxy 添加 Github 登录授权。
code-server 服务搭建
这里使用 1Panel 面板的应用市场搭建服务。1Panel安装教程在线安装 – 1Panel 文档
安装 code-server
配置反向代理
导入证书,
开启https:
完成后可通过域名访问服务器。
oauth2-proxy 搭建
这里我使用 Github 来授权代理。步骤如下:
- 创建一个 Github App。方法参考注册 GitHub 应用 – GitHub 文档
- Homepage URL :
https://auth.yourdomain.com
- Callback URL:
https://auth.yourdomain.com/oauth2/callback
- 开放用户权限。
Permissions & events -> Account permissions ->Email addresses
设置为Read-Only
使用 docker-compose.yaml 文件来搭建 oauth2-proxy
version: '3.3'
services:
oauth2-proxy:
image: quay.io/oauth2-proxy/oauth2-proxy:latest
container_name: oauth2-proxy
restart: always
volumes:
- ./oauth2-proxy-data/:/data/ #change accordingly
command:
- --http-address
- 0.0.0.0:4180
- --cookie-domain
- yourdomain.com #CHANGE HERE
- --whitelist-domain=*.yourdomain.com #CHANGE HERE
- --github-user="YOURGITHUBUSERNAME" #CHANGE HERE
environment:
- OAUTH2_PROXY_COOKIE_SECRET=GENERATEASECRETHERE #CHANGE HERE
- OAUTH2_PROXY_CLIENT_ID=GITHUB_APPLICATION_CLIENT_ID #CHANGE HERE
- OAUTH2_PROXY_CLIENT_SECRET=GITHUB_APPLICATION_CLIENT_SECRET #CHANGE HERE
- OAUTH2_PROXY_PROVIDER=github
- OAUTH2_PROXY_EMAIL_DOMAINS=*
- OAUTH2_PROXY_GITHUB_USER="YOURGITHUBUSERNAME" #CHANGE HERE
- OAUTH2_PROXY_REDIRECT_URL=https://login.yourdomain.com/oauth2/callback # should be same as the github application redirect url
- OAUTH2_PROXY_HTTP_ADDRESS=0.0.0.0:4180
- OAUTH2_PROXY_COOKIE_DOMAINS=yourdomain.com
- OAUTH2_PROXY_SESSION_STORE_TYPE=cookie
- OAUTH2_PROXY_COOKIE_SAMESITE=lax
- OAUTH2_PROXY_REVERSE_PROXY=true
- OAUTH2_PROXY_COOKIE_CSRF_PER_REQUEST=true
- OAUTH2_PROXY_COOKIE_CSRF_EXPIRE=5m
- OAUTH2_PROXY_SCOPE=user:email
- OAUTH2_PROXY_SKIP_PROVIDER_BUTTON=false
- OAUTH2_PROXY_PASS_USER_HEADERS=true
- OAUTH2_PROXY_SET_XAUTHREQUEST=true
ports:
- 4180:4180
- 8080:8080
参数说明;
OAUTH2_PROXY_COOKIE_SECRET
:使用下面指令生成。dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64 | tr -d -- '\n' | tr -- '+/' '-_' ; echo
OAUTH2_PROXY_PROVIDER
OAuth Provider,我则里使用的是github
OAUTH2_PROXY_EMAIL_DOMAINS
验证指定域名的邮箱,可以填写*来表示验证任何邮箱
OAUTH2_PROXY_CLIENT_ID
Github App的 Client IDOAUTH2_PROXY_CLIENT_SECRET
在Github App中创建的 SecretOAUTH2_PROXY_SCOPE
Github App 允许授权服务器可修改的范围。这里只需要user:email
OAUTH2_PROXY_REVERSE_PROXY
是否再反向代理后面。这里填tureOAUTH2_PROXY_GITHUB_USER
允许登录的的Github账户名--whitelist-domain
允许身份验证之后重定向的域名
根据自己的情况修改完成后使用下面指令启动 docker。
docker-compose up -d
为oauth2-proxy设置反向代理,创建方法同上。点击跳转
最后修改code-server的nginx配置文件,下面是网上的参考示例配置文件。使用oauth2-proxy给你的页面添加一个认证
server {
listen 443 ssl http2;
server_name app.xxx.cn;
ssl_certificate cert/cloudflare/cloudflare.pem;
ssl_certificate_key cert/cloudflare/cloudflare.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
auth_request /internal-auth/oauth2/auth;
error_page 401 = https://oauth.xxx.com/oauth2/sign_in?rd=scheme://hostrequest_uri;
location /{
proxy_http_version 1.1;
proxy_set_header Upgradehttp_upgrade;
proxy_set_header Connection connection_upgrade;
proxy_pass http://127.0.0.1:8080;
access_log logs/share.log main;
client_max_body_size 1000m;
}
location /internal-auth/ {
internal; # Ensure external users can't access this path
proxy_set_header Hosthost;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:4180/;
}
}
完成后,输入 code-server 域名。进入授权登录界面。根据自己需要自行修改。如果和我一样使用使用 1panel搭建的话。只需要复制下面部分,修改。
auth_request /internal-auth/oauth2/auth;
error_page 401 = https://oauth.xxx.com/oauth2/sign_in?rd=scheme://hostrequest_uri; # CHANGE HERE
location /internal-auth/ {
internal; # Ensure external users can't access this path
proxy_set_header Hosthost;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:4180/;
}
首先请求 /internal-auth/路径,如果 HTTP-401错误。则跳转到 oauth2_proxy进行认证,完成后再重定向回应用。
正常第一次访问会进入如下界面。
修改 error_page 401 重定向的 url 如下:
error_page 401 = https://oauth.xxx.com/oauth2/start?rd=scheme://host$request_uri;
第一次访问会直接进入 Github 登录界面。
完成 github 账户授权后,再回到code-server登录界面。