commit cb38e11cdc5a06794f1d3d98d12323d5213ce714 Author: Vivian Lim Date: Tue Nov 5 19:20:46 2019 -0800 initial commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..90583da --- /dev/null +++ b/Dockerfile @@ -0,0 +1,59 @@ +FROM archlinux/base:latest +MAINTAINER viviridian + +# update packages +RUN pacman -Syu --noconfirm \ +# user + && useradd -U -m -u 1000 vivlim \ +# ssh + && pacman -S openssh --noconfirm \ + && sed -i s/#PasswordAuthentication.*/PasswordAuthentication\ no/ /etc/ssh/sshd_config \ + && sed -i s/#GatewayPorts.*/GatewayPorts\ yes/ /etc/ssh/sshd_config \ + && sed -ie 's/#Port 22/Port 22/g' /etc/ssh/sshd_config \ + && sed -ri 's/#HostKey \/etc\/ssh\/ssh_host_key/HostKey \/etc\/ssh\/keys\/ssh_host_key/g' /etc/ssh/sshd_config \ + && sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_rsa_key/HostKey \/etc\/ssh\/keys\/ssh_host_rsa_key/g' /etc/ssh/sshd_config \ + && sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_dsa_key/HostKey \/etc\/ssh\/keys\/ssh_host_dsa_key/g' /etc/ssh/sshd_config \ + && sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_ecdsa_key/HostKey \/etc\/ssh\/keys\/ssh_host_ecdsa_key/g' /etc/ssh/sshd_config \ + && sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_ed25519_key/HostKey \/etc\/ssh\/keys\/ssh_host_ed25519_key/g' /etc/ssh/sshd_config \ + && mkdir /etc/ssh/keys \ +# sudo + && pacman -S sudo --noconfirm \ + && echo 'vivlim ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo \ +# delete user's password so sudo won't prompt for it + && passwd -d vivlim \ +# basic tools + && pacman -S vim git zsh base-devel man-db tmux vi --noconfirm \ +# install an aur helper + && cd /tmp \ + && git clone https://aur.archlinux.org/yay.git \ + && chown vivlim yay \ + && cd yay \ + && sudo -u vivlim makepkg -si --noconfirm \ + && cd / \ + && rm -rf /tmp/yay \ +# clean cache + && pacman -Scc --noconfirm + +# oh-my-zsh +RUN su vivlim -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh) --unattended" \ + && chsh -s /usr/bin/zsh vivlim + +# aur packages +RUN su vivlim -c "yay -S --noconfirm --cleanafter vcsh myrepos" + +# remove .zshrc because the config will overwrite it. +RUN rm /home/vivlim/.zshrc + +# Install languages: python, js, rust, elixir +RUN pacman --noconfirm -Sy npm python-pipenv elixir \ + && pacman -Scc --noconfirm + +# patch on some more packages I forgot to add before (if rebuilding, merge up!) +RUN pacman --noconfirm -Sy base iputils inotify-tools \ + && pacman -Scc --noconfirm + +COPY launch.sh /launch.sh +COPY user_launch.sh /user_launch.sh + +EXPOSE 22 +CMD ["/launch.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7622786 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,30 @@ +version: '3' +services: + arch: + build: . + image: viviridian/archdev + container_name: arch + hostname: arch_container + volumes: + #- ./launch.sh:/launch.sh:ro + #- ./user_launch.sh:/user_launch.sh:ro + - /home/vivlim/.ssh:/home/vivlim/.ssh:ro + - /home/vivlim:/home/vivlim/external + - home:/home/vivlim + - ssh_server_keys:/etc/ssh/keys + restart: unless-stopped + ports: + - "7722:22" + postgres_db: + image: postgres + restart: unless-stopped + environment: + POSTGRES_PASSWORD: secret + PGDATA: /pgdata + volumes: + - ./data/postgres:/pgdata + + +volumes: + ssh_server_keys: + home: diff --git a/launch.sh b/launch.sh new file mode 100755 index 0000000..8805767 --- /dev/null +++ b/launch.sh @@ -0,0 +1,17 @@ +#!/usr/sbin/bash + +if [ "$(ls -A /etc/ssh/keys)" ]; then + echo "keys exist in /etc/ssh/keys, using those." +else + echo "generating ssh keys" + /usr/bin/ssh-keygen -A + mv /etc/ssh/ssh_host*key* /etc/ssh/keys + ssh-keygen -t rsa -b 4096 -f /etc/ssh/keys/ssh_host_key +fi + +echo "executing user launch script" +su vivlim -c /user_launch.sh + +echo "ready for connections!" + +/usr/sbin/sshd -D diff --git a/user_launch.sh b/user_launch.sh new file mode 100755 index 0000000..dafd15c --- /dev/null +++ b/user_launch.sh @@ -0,0 +1,29 @@ +#!/usr/sbin/bash +cd /home/vivlim +vcsh clone git@github.com:vivlim/vcsh_mr.git mr +mr up + +# starting tmux +tmux -2 new-session -d + +# Update vim plugins in the background. +tmux new-window -d -n vimconfig -t 9 bash +tmux send-keys -t 9 "cd /home/vivlim/.vim \ +&& git submodule init \ +&& git submodule update \ +&& vim -E -c 'source ~/.vimrc' -c PluginInstall -c qall \ +&& curl https://sh.rustup.rs | bash -s -- -y \ +&& source ~/.cargo/env \ +&& rustup default stable \ +&& rustup component add rls rust-analysis rust-src \ +&& rustup default nightly" C-m + +tmux new-window -t 1 zsh +tmux kill-window -t 0 + +# check if password has been set and prompt if not +passwd --status vivlim | grep -q NP +if [ $? == 0 ]; then + echo "No password is set. You will be prompted for one when you connect." + tmux send-keys -t 1 "passwd vivlim" C-m +fi