Merge pull request #16 from heywoodlh/main

This commit is contained in:
Eugeny 2022-04-12 19:06:18 +02:00 committed by GitHub
commit 685bd9e89e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 129 additions and 0 deletions

47
.github/workflows/docker.yml vendored Normal file
View file

@ -0,0 +1,47 @@
name: Docker
on:
schedule:
- cron: '25 12 * * *'
push:
branches: [ main ]
tags: [ 'v*.*.*' ] # Publish semver tags as releases.
pull_request:
branches: [ main ]
env:
REGISTRY: ghcr.io
IMAGE_NAME: eugeny/warpgate
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
file: docker/Dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

37
docker/Dockerfile Normal file
View file

@ -0,0 +1,37 @@
FROM rust:bullseye AS build
ENV DEBIAN_FRONTEND noninteractive
RUN curl -fsSL https://deb.nodesource.com/setup_17.x | bash - \
&& apt-get update \
&& apt-get install -y nodejs openjdk-17-jdk \
&& rm -rf /var/lib/apt/lists/* \
&& npm install -g yarn \
&& cargo install just
COPY . /opt/warpgate
RUN cd /opt/warpgate \
&& just yarn \
&& just openapi \
&& just yarn build \
&& cargo build --release
FROM debian:bullseye
LABEL maintainer=heywoodlh
COPY --from=build /opt/warpgate/target/release/warpgate /usr/local/bin/warpgate
COPY docker/run.sh /run.sh
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update \
&& apt-get install -y openssl \
&& rm -rf /var/lib/apt/lists/*
EXPOSE 2222
EXPOSE 8888
VOLUME /data
ENTRYPOINT ["/run.sh"]

45
docker/run.sh Executable file
View file

@ -0,0 +1,45 @@
#!/usr/bin/env bash
[[ -n ${ADMIN_USER} ]] || ADMIN_USER='admin'
[[ -n ${ADMIN_PASS} ]] || ADMIN_PASS='admin'
[[ -e /data/web-admin.certificate.pem ]] || openssl req -x509 -nodes -days 7300 -newkey rsa:4096 -keyout /data/web-admin.key.pem -out /data/web-admin.certificate.pem -subj "/C=PE/ST=Lima/L=Lima/O=Acme Inc. /OU=IT Department/CN=acme.com"
password_hash=$(echo -n "${ADMIN_PASS}" | warpgate hash | cat)
[[ -f '/data/warpgate.yaml' ]] || cat << EOF > /data/warpgate.yaml
---
targets:
- name: web-admin
allow_roles:
- "warpgate:admin"
web_admin: {}
users:
- username: ${ADMIN_USER}
credentials:
- type: password
hash: "${password_hash}"
roles:
- "warpgate:admin"
roles:
- name: "warpgate:admin"
recordings:
enable: true
path: /data/recordings
web_admin:
enable: true
listen: "0.0.0.0:8888"
certificate: /data/web-admin.certificate.pem
key: /data/web-admin.key.pem
database_url: "sqlite:/data/db"
ssh:
listen: "0.0.0.0:2222"
keys: /data/ssh-keys
client_key: "./client_key"
retention: 7days
EOF
[[ -L /etc/warpgate.yaml ]] || ln -s /data/warpgate.yaml /etc/warpgate.yaml
warpgate $@