From bd411d948b8d1e85a02d4695102573d91c5abb2f Mon Sep 17 00:00:00 2001 From: Mike Date: Thu, 19 Dec 2024 12:22:54 +0000 Subject: [PATCH] Initial commit --- .woodpecker.yaml | 18 ++++++++++ Dockerfile | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 9 +++++ README.md | 39 +++++++++++++++++++++ services.conf | 67 +++++++++++++++++++++++++++++++++++ 5 files changed, 223 insertions(+) create mode 100644 .woodpecker.yaml create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 services.conf diff --git a/.woodpecker.yaml b/.woodpecker.yaml new file mode 100644 index 0000000..c8ba6f5 --- /dev/null +++ b/.woodpecker.yaml @@ -0,0 +1,18 @@ +steps: + - name: Overte Domain Server AIO Docker + when: + - branch: main + event: tag + image: woodpeckerci/plugin-docker-buildx:4.2 + settings: + platforms: linux/amd64 + repo: alveusdev/overtedomainserver + tags: latest + auto_tag: true + build_args: + - TAG=${CI_COMMIT_TAG} + - REPO=https://github.com/overte-org/overte + username: + from_secret: DOCKERHUB_USER + password: + from_secret: DOCKERHUB_TOKEN diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1c3dd7b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,90 @@ +FROM alveusdev/overtedomainserver-buildenv:latest AS build + +ARG REPO=https://github.com/overte-org/overte +ARG TAG=master + +ARG DEBIAN_FRONTEND=noninteractive +ARG TERM=linux +ARG MAKEFLAGS=-j2 +ARG TARGETARCH + +# Create build and output directory +RUN mkdir /opt/overte-build \ + && mkdir /opt/overte + +# Fetch repository +RUN git clone --depth 1 --branch $TAG $REPO /opt/overte-build/ + +# Build just the server +RUN cd /opt/overte-build \ + && mkdir build \ + && cd ./build \ + && export OVERTE_USE_SYSTEM_QT=1 \ + && export RELEASE_TYPE=PRODUCTION \ + && cmake -DSERVER_ONLY=1 -DOVERTE_CPU_ARCHITECTURE=-msse3 .. + +RUN cd /opt/overte-build/build \ + && make + +# Move built binraries etc to output directory +RUN mv /opt/overte-build/build/libraries /opt/overte/libraries \ + && mv /opt/overte-build/build/assignment-client/assignment-client /opt/overte/assignment-client \ + && mv /opt/overte-build/build/assignment-client/plugins /opt/overte/plugins \ + && mv /opt/overte-build/build/domain-server/domain-server /opt/overte/domain-server \ + && mv /opt/overte-build/domain-server/resources /opt/overte/resources + +# Runtime +FROM --platform=$BUILDPLATFORM debian:bookworm-slim AS runtime + +LABEL maintainer="alveus.dev" +LABEL description="Overte Domain Server AIO" + +ARG DEBIAN_FRONTEND=noninteractive +ARG TERM=linux +ARG TARGETARCH + +RUN echo UTC >/etc/timezone + +RUN echo 'APT::Install-Suggests "0";' >> /etc/apt/apt.conf.d/00-docker +RUN echo 'APT::Install-Recommends "0";' >> /etc/apt/apt.conf.d/00-docker + +# Install dependencies +RUN apt update && apt install -y tzdata supervisor libopengl-dev ca-certificates \ + libqt5widgets5 libqt5network5 libqt5script5 libqt5core5a libqt5qml5 libqt5websockets5 libqt5gui5 libnode108 + +# Cleanup +RUN apt clean && rm -rf /var/lib/app/lists/* + +# Install libraries +COPY --from=build /opt/overte/libraries/*/*.so /lib/ + +RUN mkdir /opt/overte + +# Fetch built services +COPY --from=build /opt/overte/domain-server /opt/overte +COPY --from=build /opt/overte/assignment-client /opt/overte +COPY --from=build /opt/overte/plugins /opt/overte/plugins +COPY --from=build /opt/overte/resources /opt/overte/resources + +RUN chmod +x /opt/overte/domain-server && \ + chmod +x /opt/overte/assignment-client + +# Run test +RUN /opt/overte/domain-server --version > /opt/overte/version && \ + /opt/overte/assignment-client --version >> /opt/overte/version + +# Install supervisor config +COPY ./services.conf /etc/supervisor/conf.d/overte.conf + +RUN useradd -Ms /bin/bash services + +RUN mkdir /var/log/overte + +# Expose required ports +EXPOSE 40100 40101 40102 +EXPOSE 40100/udp 40101/udp 40102/udp +EXPOSE 48000/udp 48001/udp 48002/udp 48003/udp 48004/udp 48005/udp 48006/udp + +ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/overte.conf"] + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a165e7d --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2024 misc + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..08bdf57 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# Overte Domain Server AIO + +All-in-one docker image for Overte Domain Server hosting. + +Contains: Domain server, Assignment servers for Audio Mixer, Avatar Mixer, Entities Server, Asset Server, Entity Script Server, Messages Server, Scripted Agent. + +--- + +Please refer to overte documentation for how to configure the domain server (https://docs.overte.org/en/latest/host/configure-settings.html). + +--- + +Pull from docker: `alveusdev/overtedomainserver:latest` + +Currently only available for amd64 architecture. + +--- + +Exposed ports: + +- 40100/tcp +- 40101/tcp +- 40102/tcp +- 40100/udp +- 40101/udp +- 40102/udp +- 48000/udp +- 48001/udp +- 48002/udp +- 48003/udp +- 48004/udp +- 48005/udp +- 48006/udp + +Domain server web UI available on port `40100` (HTTP) + +--- + +[![status-badge](https://wci.alveus.dev/api/badges/31/status.svg)](https://wci.alveus.dev/repos/31) diff --git a/services.conf b/services.conf new file mode 100644 index 0000000..dacb241 --- /dev/null +++ b/services.conf @@ -0,0 +1,67 @@ +[supervisord] +user=root +nodaemon=true + +[program:domain-server] +command=/opt/overte/domain-server +user=services +autorestart=unexpected +directory=/opt/overte/ +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log + +[program:audio-mixer] +command=/opt/overte/assignment-client -t 0 -a localhost -p 48000 +user=services +autorestart=unexpected +directory=/opt/overte +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log + +[program:avatar-mixer] +command=/opt/overte/assignment-client -t 1 -a localhost -p 48001 +user=services +autorestart=unexpected +directory=/opt/overte +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log + +[program:entities-server] +command=/opt/overte/assignment-client -t 6 -a localhost -p 48006 +user=services +autorestart=unexpected +directory=/opt/overte +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log + +[program:asset-server] +command=/opt/overte/assignment-client -t 3 -a localhost -p 48003 +user=services +autorestart=unexpected +directory=/opt/overte +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log + +[program:entity-script-server] +command=/opt/overte/assignment-client -t 5 -a localhost -p 48005 +user=services +autorestart=unexpected +directory=/opt/overte +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log + +[program:messages-mixer] +command=/opt/overte/assignment-client -t 4 -a localhost -p 48004 +user=services +autorestart=unexpected +directory=/opt/overte +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log + +[program:scripted-agent] +command=/opt/overte/assignment-client -t 2 -a localhost --max 100 +user=services +autorestart=unexpected +directory=/opt/overte +stderr_logfile=/var/log/overte/overte-err.log +stdout_logfile=/var/log/overte/overte-out.log