mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-02-23 23:09:56 +03:00
Merge pull request #2101 from chipitsine/master
CI: move docker build machinery to the main repo
This commit is contained in:
commit
f525b4d660
59
.github/workflows/docker-vpnbridge.yml
vendored
Normal file
59
.github/workflows/docker-vpnbridge.yml
vendored
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
name: docker-vpnbridge
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker-vpnbridge:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
variant: [
|
||||||
|
{ name: amd64, platform: "linux/amd64", repo: "softethervpn/vpnbridge" },
|
||||||
|
{ name: arm64, platform: "linux/arm64", repo: "softethervpn/vpnbridge-arm64" }
|
||||||
|
]
|
||||||
|
name: vpnbridge/${{ matrix.variant.name }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.repository_owner == 'SoftEtherVPN' }}
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Docker meta
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ matrix.variant.repo }}
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
|
type=ref,event=pr
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
-
|
||||||
|
name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
with:
|
||||||
|
image: tonistiigi/binfmt:qemu-v9.2.0
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
-
|
||||||
|
name: Login to DockerHub
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
-
|
||||||
|
name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
file: ./Dockerfile
|
||||||
|
target: vpnbridge
|
||||||
|
platforms: ${{ matrix.variant.platform }}
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
59
.github/workflows/docker-vpnclient.yml
vendored
Normal file
59
.github/workflows/docker-vpnclient.yml
vendored
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
name: docker-vpnclient
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker-vpnclient:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
variant: [
|
||||||
|
{ name: amd64, platform: "linux/amd64", repo: "softethervpn/vpnclient" },
|
||||||
|
{ name: arm64, platform: "linux/arm64", repo: "softethervpn/vpnclient-arm64" }
|
||||||
|
]
|
||||||
|
name: vpnclient/${{ matrix.variant.name }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.repository_owner == 'SoftEtherVPN' }}
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Docker meta
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ matrix.variant.repo }}
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
|
type=ref,event=pr
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
-
|
||||||
|
name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
with:
|
||||||
|
image: tonistiigi/binfmt:qemu-v9.2.0
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
-
|
||||||
|
name: Login to DockerHub
|
||||||
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
-
|
||||||
|
name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
file: ./Dockerfile
|
||||||
|
target: vpnclient
|
||||||
|
platforms: ${{ matrix.variant.platform }}
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
59
.github/workflows/docker-vpnserver.yml
vendored
Normal file
59
.github/workflows/docker-vpnserver.yml
vendored
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
name: docker-vpnserver
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
variant: [
|
||||||
|
{ name: amd64, platform: "linux/amd64", repo: "softethervpn/vpnserver" },
|
||||||
|
{ name: arm64, platform: "linux/arm64", repo: "softethervpn/vpnserver-arm64" }
|
||||||
|
]
|
||||||
|
name: vpnserver/${{ matrix.variant.name }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.repository_owner == 'SoftEtherVPN' }}
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Docker meta
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ matrix.variant.repo }}
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
|
type=ref,event=pr
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
-
|
||||||
|
name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
with:
|
||||||
|
image: tonistiigi/binfmt:qemu-v9.2.0
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
-
|
||||||
|
name: Login to DockerHub
|
||||||
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
-
|
||||||
|
name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
file: ./Dockerfile
|
||||||
|
target: vpnserver
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
platforms: ${{ matrix.variant.platform }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
51
Dockerfile
Normal file
51
Dockerfile
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
FROM alpine AS builder
|
||||||
|
RUN mkdir /usr/local/src && apk add binutils --no-cache\
|
||||||
|
linux-headers \
|
||||||
|
build-base \
|
||||||
|
readline-dev \
|
||||||
|
openssl-dev \
|
||||||
|
ncurses-dev \
|
||||||
|
git \
|
||||||
|
cmake \
|
||||||
|
zlib-dev \
|
||||||
|
libsodium-dev \
|
||||||
|
gnu-libiconv
|
||||||
|
|
||||||
|
ENV LD_PRELOAD=/usr/lib/preloadable_libiconv.so
|
||||||
|
ADD ./ /usr/local/src/SoftEtherVPN/
|
||||||
|
WORKDIR /usr/local/src
|
||||||
|
ENV USE_MUSL=YES
|
||||||
|
ENV CMAKE_FLAGS="-DSE_PIDDIR=/run/softether -DSE_LOGDIR=/var/log/softether -DSE_DBDIR=/var/lib/softether"
|
||||||
|
RUN cd SoftEtherVPN &&\
|
||||||
|
./configure &&\
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN) -C build
|
||||||
|
|
||||||
|
FROM alpine AS base
|
||||||
|
RUN apk add --no-cache readline \
|
||||||
|
openssl \
|
||||||
|
libsodium \
|
||||||
|
gnu-libiconv \
|
||||||
|
iptables
|
||||||
|
ENV LD_PRELOAD=/usr/lib/preloadable_libiconv.so
|
||||||
|
WORKDIR /usr/local/bin
|
||||||
|
VOLUME /var/log/softether
|
||||||
|
VOLUME /var/lib/softether
|
||||||
|
VOLUME /run/softether
|
||||||
|
COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpncmd /usr/local/src/SoftEtherVPN/build/hamcore.se2 ./
|
||||||
|
COPY --from=builder /usr/local/src/SoftEtherVPN/build/libcedar.so /usr/local/src/SoftEtherVPN/build/libmayaqua.so /usr/local/lib/
|
||||||
|
|
||||||
|
|
||||||
|
FROM base AS vpnserver
|
||||||
|
COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnserver ./
|
||||||
|
EXPOSE 443/tcp 992/tcp 1194/tcp 1194/udp 5555/tcp 500/udp 4500/udp
|
||||||
|
CMD ["/usr/local/bin/vpnserver", "execsvc"]
|
||||||
|
|
||||||
|
|
||||||
|
FROM base AS vpnclient
|
||||||
|
COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnclient ./
|
||||||
|
CMD ["/usr/local/bin/vpnclient", "execsvc"]
|
||||||
|
|
||||||
|
|
||||||
|
FROM base AS vpnbridge
|
||||||
|
COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnbridge ./
|
||||||
|
CMD ["/usr/local/bin/vpnbridge", "execsvc"]
|
16
docker-compose.vpnclient.yaml
Normal file
16
docker-compose.vpnclient.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
softether:
|
||||||
|
image: softethervpn/vpnclient:latest
|
||||||
|
devices:
|
||||||
|
- /dev/net/tun:/dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
|
- "/etc/timezone:/etc/timezone:ro"
|
||||||
|
- "./softether_data:/var/lib/softether"
|
||||||
|
- "./softether_log:/var/log/softether"
|
||||||
|
# - "./adminip.txt:/var/lib/softether/adminip.txt:ro"
|
23
docker-compose.yaml
Normal file
23
docker-compose.yaml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
softether:
|
||||||
|
image: softethervpn/vpnserver:latest
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
#- 53:53 #DNS tunneling
|
||||||
|
- 443:443 #Management and HTTPS tunneling
|
||||||
|
- 992:992 #HTTPS tunneling
|
||||||
|
#- 1194:1194/udp #OpenVPN
|
||||||
|
#- 5555:5555 #HTTPS tunneling
|
||||||
|
#- 500:500/udp #IPsec/L2TP
|
||||||
|
#- 4500:4500/udp #IPsec/L2TP
|
||||||
|
#- 1701:1701/udp #IPsec/L2TP
|
||||||
|
volumes:
|
||||||
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
|
- "/etc/timezone:/etc/timezone:ro"
|
||||||
|
- "./softether_data:/var/lib/softether"
|
||||||
|
- "./softether_log:/var/log/softether"
|
||||||
|
# - "./adminip.txt:/var/lib/softether/adminip.txt:ro"
|
Loading…
Reference in New Issue
Block a user