diff --git a/README.md b/README.md index 124de02..ee03a8f 100644 --- a/README.md +++ b/README.md @@ -36,4 +36,11 @@ xmake f -m debug/release # 示例 xmake b -vy crossdesk_server ``` -更多使用方法可参考 [Xmake官方文档](https://xmake.io/guide/quick-start.html) 。 \ No newline at end of file +更多使用方法可参考 [Xmake官方文档](https://xmake.io/guide/quick-start.html) 。 + +## 构建镜像 +``` +cd docker + +sudo docker build -t image-name . +``` \ No newline at end of file diff --git a/README_EN.md b/README_EN.md index 65ae2e2..2badeb9 100644 --- a/README_EN.md +++ b/README_EN.md @@ -34,4 +34,11 @@ xmake f -m debug/release # Example xmake b -vy crossdesk_server ``` -For more information, please refer to the [official Xmake documentation](https://xmake.io/guide/quick-start.html) . \ No newline at end of file +For more information, please refer to the [official Xmake documentation](https://xmake.io/guide/quick-start.html) . + +## Build Docker Image +``` +cd docker + +sudo docker build -t image-name . +``` \ No newline at end of file diff --git a/docker/dockerfile b/docker/dockerfile new file mode 100644 index 0000000..6eb0578 --- /dev/null +++ b/docker/dockerfile @@ -0,0 +1,21 @@ +FROM crossdesk/crossdesk-server-base:latest + +# create certificate directory and generate a self-signed TLS certificate +RUN mkdir -p /opt/turnserver && \ + cd /opt/turnserver && \ + # generate private key + openssl genrsa -out turn_server_pkey.pem 2048 && \ + # generate self-signed certificate (valid for 10 years) + openssl req -x509 -new -nodes \ + -key turn_server_pkey.pem \ + -sha256 -days 3650 \ + -subj "/C=CN/ST=Beijing/L=Beijing/O=SelfSigned/OU=IT/CN=coturn.local" \ + -out turn_server_cert.pem && \ + chmod 600 /opt/turnserver/turn_server_pkey.pem + +# copy entrypoint script into the image +COPY start.sh /start.sh +RUN chmod +x /start.sh + +# Set the container entrypoint +ENTRYPOINT ["/start.sh"] \ No newline at end of file diff --git a/docker/start.sh b/docker/start.sh new file mode 100644 index 0000000..511e303 --- /dev/null +++ b/docker/start.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -e + +# environment variables for coturn +CONF_FILE=/etc/coturn/turnserver.conf +CERT_FILE=/opt/turnserver/turn_server_cert.pem +PKEY_FILE=/opt/turnserver/turn_server_pkey.pem + +# environment variables for crossdesk-server +CROSSDESK_SERVER_PORT=${CROSSDESK_SERVER_PORT:-9090} + +# check environment variables +if [ -z "$EXTERNAL_IP" ] || [ -z "$INTERNAL_IP" ]; then + echo "Error: EXTERNAL_IP and INTERNAL_IP must be set." + echo "Example: docker run -e EXTERNAL_IP=1.2.3.4 -e INTERNAL_IP=10.0.0.5 crossdesk-server" + exit 1 +fi + +# generate coturn configuration file +mkdir -p /etc/coturn +cat > "$CONF_FILE" <