Files
dokuwiki-data/pages/work/alcap/r15a-xray-on-mu2e.bu.edu.txt
2020-10-12 15:38:02 -05:00

142 lines
4.5 KiB
Plaintext

This note describe how I set up the Cocalc server on ''mu2e.bu.edu'' machine
====== Docker services ======
===== Linuxserver swag =====
This service takes care of Let's Encrypt certificate issuance and renewal. Be careful though, do not delete/recreate this service too often because there is a rate limit of 5 certs per week.
* ports ''80'', ''443'', and ''8443'' are exposed. The first two are needed for the certificates, the ''8443'' is for the Cocalc service
* nice thing about ''linuxserver'' dockers are graceful handling of ''uid'' and ''gid''
* asking for certificate for ''mu2e.bu.edu'' only. Cocalc doesn't appear to work nicely with a subfolder path. And subdomain doesn't appear to work on this box (maybe net admin at BU must add/allow subdomain?).
<code yaml>
swag:
image: linuxserver/swag
container_name: swag
cap_add:
- NET_ADMIN
environment:
- PUID=1004
- PGID=1004
- TZ=America/New_York
- URL=mu2e.bu.edu
- VALIDATION=http
- ONLY_SUBDOMAINS=false #optional
- STAGING=false
volumes:
- ./swag-config:/config
ports:
- 443:443
- 80:80 #optional
- 0.0.0.0:8443:8443
restart: unless-stopped
networks:
- cocalc
</code>
===== Cocalc service =====
Copied from Cocalc documentation, nothing much to say here.
<code yaml>
cocalc:
image: sagemathinc/cocalc
container_name: cocalc
volumes:
- ./cocalc-data:/projects
# ports:
# - 0.0.0.0:8752:443
restart: unless-stopped
networks:
- cocalc
</code>
====== Further configuration ======
===== Reverse proxy for Cocalc =====
The proxy is configured in ''swag'' by adding a server on port ''8443'' which is forwarded to ''cocalc:443''.
<code nginx>
(base) @mu2e:cocalc-docker nam $ cat swag-config/nginx/proxy-confs/cocalc.subdomain.conf
server {
listen 8443 ssl;
listen [::]:8443 ssl;
index index.html index.htm index.php;
server_name mu2e.bu.edu;
# all ssl related config moved to ssl.conf
include /config/nginx/ssl.conf;
client_max_body_size 50;
server_tokens off;
location / {
proxy_pass https://cocalc:443;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3m;
proxy_send_timeout 3m;
}
}
</code>
===== Spin it up! =====
Run ''docker-compose up -d''
===== Configure user on Cocalc =====
* self-register on first launch
* launch an interactive shell within running ''cocalc'' container,
* generate SSH pubkey and add to Github
* create ''.gitconfig''
<code bash>
~$ cat .gitconfig
[user]
name = Nam Tran
email = thnam.me@gmail.com
[core]
editor = vim
quotepath = false
autocrlf = input
excludesfile = /projects/0223d4fc-683f-424a-8bdf-8d867a4ac9c9/.gitexcludes
[merge]
tool = opendiff
conflictstyle = diff3
[alias]
ci = commit
co = checkout
st = status
br = branch
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
type = cat-file -t
dump = cat-file -p
ignored = !git ls-files -v | grep ^[[:lower:]]
[color]
ui = true
[push]
default = tracking
[branch]
autosetupmerge = true
</code>
===== Prepare Latex code =====
* Pull the source ''~$ git clone git@github.com:bostonu-cas/r15a_xray.git''
* Install Revtex v4.2 <code bash>
~$ mkdir texmf
~$ cd texmf/
~$ wget https://journals.aps.org/revtex/revtex4-2-tds.zip
~$ unzip revtex4-2-tds.zip
</code>
* Go to the source directory, Cocalc automatically runs ''latexmk'' to compile
===== Syncing =====
* Automatic pull <code bash>
~$ mkdir utils && cd utils && git clone https://github.com/kolbasa/git-repo-watcher
# Add PATH, then run in a latex terminal
~/r15a_xray$ git-repo-watcher -d . -i 60 > /dev/null 2>&1 &
</code>
* Auto commit and push
* prepare script and add to ''PATH'' <code bash>
~$ cat utils/git-auto-commit
#!/usr/bin/env bash
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
git pull && git ci -am "auto-commit from mu2e.bu.edu:8443" && git push
</code>
* edit compile command to: ''latexmk -pdf ... xray.tex && ~/utils/git-auto-commit''