-
-
Notifications
You must be signed in to change notification settings - Fork 617
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
248 changed files
with
78,108 additions
and
4,379 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
# | ||
# Stage 0: Build xorg dependencies. | ||
# | ||
FROM debian:bullseye-slim as xorg-deps | ||
|
||
ENV DEBIAN_FRONTEND=noninteractive | ||
|
||
RUN set -eux; \ | ||
apt-get update; \ | ||
apt-get install -y \ | ||
git gcc pkgconf autoconf automake libtool make xorg-dev xutils-dev \ | ||
&& rm -rf /var/lib/apt/lists/*; | ||
|
||
WORKDIR /xorg | ||
|
||
COPY xorg/ /xorg/ | ||
|
||
# build xserver-xorg-video-dummy 0.3.8-2 with RandR support. | ||
RUN set -eux; \ | ||
cd xf86-video-dummy; \ | ||
git clone --depth 1 --branch xserver-xorg-video-dummy-1_0.3.8-2 https://salsa.debian.org/xorg-team/driver/xserver-xorg-video-dummy; \ | ||
cd xserver-xorg-video-dummy; \ | ||
patch -p1 < ../xdummy-randr.patch; \ | ||
./autogen.sh; \ | ||
make -j$(nproc); \ | ||
make install; | ||
|
||
# build custom input driver | ||
RUN set -eux; \ | ||
cd xf86-input-neko; \ | ||
./autogen.sh --prefix=/usr; \ | ||
./configure; \ | ||
make -j$(nproc); \ | ||
make install; | ||
|
||
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.166.0/containers/go/.devcontainer/base.Dockerfile | ||
|
||
# [Choice] Go version: 1, 1.16, 1.15 | ||
ARG VARIANT="1" | ||
FROM mcr.microsoft.com/vscode/devcontainers/go:0-${VARIANT} | ||
|
||
# [Option] Install Node.js | ||
ARG INSTALL_NODE="true" | ||
ARG NODE_VERSION="lts/*" | ||
RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi | ||
|
||
# build dependencies | ||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
&& apt-get -y install --no-install-recommends \ | ||
libx11-dev libxrandr-dev libxtst-dev libgtk-3-dev \ | ||
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev; \ | ||
# install libxcvt-dev (not available in base image) | ||
wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt-dev_0.1.2-1_amd64.deb; \ | ||
wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_amd64.deb; \ | ||
apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_amd64.deb ./libxcvt-dev_0.1.2-1_amd64.deb; | ||
|
||
# runtime dependencies | ||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
&& apt-get -y install --no-install-recommends \ | ||
wget ca-certificates supervisor \ | ||
pulseaudio dbus-x11 xserver-xorg-video-dummy \ | ||
libcairo2 libxcb1 libxrandr2 libxv1 libopus0 libvpx6 \ | ||
# | ||
# needed for profile upload preStop hook | ||
zip curl \ | ||
# | ||
# file chooser handler, clipboard, drop | ||
xdotool xclip libgtk-3-0 \ | ||
# | ||
# gst | ||
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ | ||
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ | ||
gstreamer1.0-pulseaudio; | ||
# libxcvt already installed | ||
|
||
# dev runtime dependencies | ||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
&& apt-get -y install --no-install-recommends \ | ||
xfce4 xfce4-terminal firefox-esr sudo; | ||
|
||
# configure runtime | ||
ARG USERNAME=neko | ||
ARG USER_UID=1001 | ||
ARG USER_GID=$USER_UID | ||
RUN set -eux; \ | ||
# | ||
# create a non-root user | ||
groupadd --gid $USER_GID $USERNAME; \ | ||
useradd --uid $USER_UID --gid $USERNAME --shell /bin/bash --create-home $USERNAME; \ | ||
adduser $USERNAME audio; \ | ||
adduser $USERNAME video; \ | ||
adduser $USERNAME pulse; \ | ||
# | ||
# add sudo support | ||
echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME; \ | ||
chmod 0440 /etc/sudoers.d/$USERNAME; \ | ||
# | ||
# workaround for an X11 problem: http://blog.tigerteufel.de/?p=476 | ||
mkdir /tmp/.X11-unix; \ | ||
chmod 1777 /tmp/.X11-unix; \ | ||
chown $USERNAME /tmp/.X11-unix/; \ | ||
# | ||
# make directories for neko | ||
mkdir -p /etc/neko /var/www; \ | ||
chown -R $USERNAME:$USERNAME /home/$USERNAME; \ | ||
# | ||
# install fonts | ||
apt-get install -y --no-install-recommends \ | ||
# Emojis | ||
fonts-noto-color-emoji \ | ||
# Chinese fonts | ||
fonts-arphic-ukai fonts-arphic-uming \ | ||
# Japanese fonts | ||
fonts-ipafont-mincho fonts-ipafont-gothic \ | ||
# Korean fonts | ||
fonts-unfonts-core \ | ||
# Indian fonts | ||
fonts-indic; | ||
|
||
# copy dependencies from previous stage | ||
COPY --from=xorg-deps /usr/local/lib/xorg/modules/drivers/dummy_drv.so /usr/lib/xorg/modules/drivers/dummy_drv.so | ||
COPY --from=xorg-deps /usr/local/lib/xorg/modules/input/neko_drv.so /usr/lib/xorg/modules/input/neko_drv.so | ||
|
||
# copy runtime files | ||
COPY runtime/dbus /usr/bin/dbus | ||
COPY runtime/default.pa /etc/pulse/default.pa | ||
COPY runtime/supervisord.conf /etc/neko/supervisord.conf | ||
COPY runtime/xorg.conf /etc/neko/xorg.conf | ||
COPY runtime/icon-theme /home/$USERNAME/.icons/default | ||
|
||
# copy dev runtime files | ||
COPY dev/runtime/config.yml /etc/neko/neko.yml | ||
COPY dev/runtime/supervisord.conf /etc/neko/supervisord/dev.conf | ||
|
||
# customized scripts | ||
RUN chmod +x /usr/bin/dbus;\ | ||
echo '#!/bin/sh\nsleep infinity' > /usr/bin/neko; \ | ||
chmod +x /usr/bin/neko; \ | ||
echo '#!/bin/sh\nsudo sh -c "export USER='$USERNAME'\nexport HOME=/home/'$USERNAME'\n/usr/bin/supervisord -c /etc/neko/supervisord.conf"' > /usr/bin/deps; \ | ||
chmod +x /usr/bin/deps; \ | ||
touch .env.development; | ||
|
||
# set default envs | ||
ENV USER=$USERNAME | ||
ENV DISPLAY=:99.0 | ||
ENV PULSE_SERVER=unix:/tmp/pulseaudio.socket | ||
ENV NEKO_SERVER_BIND=:3000 | ||
ENV NEKO_WEBRTC_EPR=3001-3004 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# dev container | ||
|
||
You need to run all dependencies with `deps` command before you start debugging. | ||
|
||
Create `.env.development` in repository root. Make sure your local IP is correct. | ||
|
||
```sh | ||
NEKO_WEBRTC_NAT1TO1=10.0.0.8 | ||
``` | ||
|
||
# without container | ||
|
||
- Make sure `pulseaudio` contains correct configuration. | ||
- Specify `DISPLAY` that is being used by xorg. | ||
|
||
```sh | ||
DISPLAY=:0 | ||
NEKO_WEBRTC_NAT1TO1=10.0.0.8 | ||
NEKO_SERVER_BIND=:3000 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: | ||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.166.0/containers/go | ||
{ | ||
"name": "Go", | ||
"build": { | ||
"dockerfile": "Dockerfile", | ||
"context": "../server/", | ||
"args": { | ||
// Update the VARIANT arg to pick a version of Go: 1, 1.16, 1.15 | ||
"VARIANT": "1.20", | ||
// Options | ||
"INSTALL_NODE": "false", | ||
"NODE_VERSION": "lts/*" | ||
} | ||
}, | ||
"runArgs": [ "--cap-add=SYS_PTRACE", "--cap-add=SYS_ADMIN", "--shm-size=2G", "--security-opt", "seccomp=unconfined" ], | ||
|
||
"customizations": { | ||
"vscode": { | ||
// Set *default* container specific settings.json values on container create. | ||
"settings": { | ||
"terminal.integrated.shell.linux": "/bin/bash", | ||
"go.toolsManagement.checkForUpdates": "local", | ||
"go.useLanguageServer": true, | ||
"go.gopath": "/go", | ||
"go.goroot": "/usr/local/go" | ||
}, | ||
|
||
// Add the IDs of extensions you want installed when the container is created. | ||
"extensions": [ | ||
"golang.Go" | ||
] | ||
} | ||
}, | ||
|
||
// Use 'forwardPorts' to make a list of ports inside the container available locally. | ||
"appPort": ["3000:3000", "3001:3001/udp", "3002:3002/udp", "3003:3003/udp", "3004:3004/udp"], | ||
|
||
// Use 'postCreateCommand' to run commands after the container is created. | ||
// "postCreateCommand": "go version", | ||
|
||
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. | ||
"remoteUser": "neko" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,4 +19,4 @@ | |
*.ico binary | ||
*.mov binary | ||
*.mp4 binary | ||
*.mp3 binary | ||
*.mp3 binary |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
name: Create and publish a Docker image | ||
|
||
on: workflow_dispatch | ||
# push: | ||
# branches: | ||
# - 'master' | ||
# tags: | ||
# - 'v*' | ||
|
||
env: | ||
REGISTRY: ghcr.io | ||
IMAGE_NAME: ${{ github.repository }} | ||
|
||
jobs: | ||
build-and-push-image: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
packages: write | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Extract metadata (tags, labels) for Docker | ||
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: | ||
context: ./server/ | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
name: Create and publish a Docker image variant | ||
|
||
on: workflow_dispatch | ||
# push: | ||
# tags: | ||
# - 'v*' | ||
|
||
env: | ||
REGISTRY: ghcr.io | ||
IMAGE_NAME: ${{ github.repository }} | ||
|
||
jobs: | ||
build-and-push-image-variant: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
packages: write | ||
|
||
strategy: | ||
matrix: | ||
include: | ||
- variant: bookworm | ||
dockerfile: Dockerfile.bookworm | ||
- variant: nvidia | ||
dockerfile: Dockerfile.nvidia | ||
- variant: nvidia_bookworm | ||
dockerfile: Dockerfile.nvidia.bookworm | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta | ||
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 | ||
with: | ||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/${{ matrix.variant }} | ||
|
||
- name: Build and push Docker image | ||
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc | ||
with: | ||
context: ./server/ | ||
file: ${{ matrix.dockerfile }} | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
name: Build a Docker image | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- master | ||
|
||
jobs: | ||
build-image: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Build Docker image | ||
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc | ||
with: | ||
context: ./server/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{ | ||
// Use IntelliSense to learn about possible attributes. | ||
// Hover to view descriptions of existing attributes. | ||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||
"version": "0.2.0", | ||
"configurations": [ | ||
{ | ||
"name": "launch", | ||
"type": "go", | ||
"debugAdapter": "dlv-dap", | ||
"request": "launch", | ||
"mode": "debug", | ||
"program": "${workspaceFolder}/server/cmd/neko", | ||
"output": "${workspaceFolder}/server/bin/debug/neko", | ||
"cwd": "${workspaceFolder}/server/", | ||
"args": ["serve", "-d", "-c", "dev/runtime/config.yml"], | ||
"env": { | ||
"DISPLAY": ":99.0", | ||
"PION_LOG_TRACE": "all", | ||
} | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,13 @@ | ||
{} | ||
{ | ||
"go.inferGopath": false, | ||
"go.autocompleteUnimportedPackages": true, | ||
"go.delveConfig": { | ||
"useApiV1": false | ||
}, | ||
"[go]": { | ||
"editor.formatOnSave": true, | ||
"editor.codeActionsOnSave": { | ||
"source.organizeImports": "explicit" | ||
} | ||
} | ||
} |
Oops, something went wrong.