mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
add build scripts.
This commit is contained in:
parent
a1f7b23f9d
commit
757437111e
14
dev/build
Executable file
14
dev/build
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
#
|
||||||
|
# aborting if any command returns a non-zero value
|
||||||
|
set -e
|
||||||
|
|
||||||
|
GIT_COMMIT=`git rev-parse --short HEAD`
|
||||||
|
GIT_BRANCH=`git rev-parse --symbolic-full-name --abbrev-ref HEAD`
|
||||||
|
|
||||||
|
docker build -t neko_server_build --target build --build-arg "GIT_COMMIT=$GIT_COMMIT" --build-arg "GIT_BRANCH=$GIT_BRANCH" ..
|
||||||
|
docker build -t neko_server_runtime --target runtime --build-arg "GIT_COMMIT=$GIT_COMMIT" --build-arg "GIT_BRANCH=$GIT_BRANCH" ..
|
||||||
|
|
||||||
|
docker build -t neko_server_app --build-arg "BASE_IMAGE=neko_server_runtime" ./runtime
|
3
dev/exec
Executable file
3
dev/exec
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
docker exec -it neko_server_dev /bin/bash
|
12
dev/fmt
Executable file
12
dev/fmt
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
if [ "$(docker images -q neko_server_build 2> /dev/null)" == "" ]; then
|
||||||
|
echo "Image 'neko_server_build' not found. Run ./build first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker run -it --rm \
|
||||||
|
--entrypoint="go" \
|
||||||
|
-v "${PWD}/../:/src" \
|
||||||
|
neko_server_build fmt ./...
|
25
dev/go
Executable file
25
dev/go
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
if [ "$(docker images -q neko_server_build 2> /dev/null)" == "" ]; then
|
||||||
|
echo "Image 'neko_server_build' not found. Run ./build first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker run -it \
|
||||||
|
--name "neko_server_go" \
|
||||||
|
--entrypoint="go" \
|
||||||
|
-v "${PWD}/../:/src" \
|
||||||
|
neko_server_build "$@";
|
||||||
|
#
|
||||||
|
# copy package files
|
||||||
|
docker cp neko_server_go:/src/go.mod "../go.mod"
|
||||||
|
docker cp neko_server_go:/src/go.sum "../go.sum"
|
||||||
|
|
||||||
|
#
|
||||||
|
# commit changes to image
|
||||||
|
docker commit "neko_server_go" "neko_server_build"
|
||||||
|
|
||||||
|
#
|
||||||
|
# remove contianer
|
||||||
|
docker rm "neko_server_go"
|
14
dev/lint
Executable file
14
dev/lint
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
if [ "$(docker images -q neko_server_build 2> /dev/null)" == "" ]; then
|
||||||
|
echo "Image 'neko_server_build' not found. Run ./build first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# build server
|
||||||
|
docker run --rm -it \
|
||||||
|
-v "${PWD}/../:/src" \
|
||||||
|
--entrypoint="/bin/bash" \
|
||||||
|
neko_server_build -c '[ -f ./bin/golangci-lint ] || curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.31.0;./bin/golangci-lint run';
|
32
dev/rebuild
Executable file
32
dev/rebuild
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
#
|
||||||
|
# aborting if any command returns a non-zero value
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#
|
||||||
|
# build server
|
||||||
|
docker run --rm -it \
|
||||||
|
-v "${PWD}/../:/src" \
|
||||||
|
--entrypoint="/bin/bash" \
|
||||||
|
neko_server_build "./build" "$@";
|
||||||
|
|
||||||
|
#
|
||||||
|
# remove old plugins
|
||||||
|
docker exec neko_server_dev rm -rf /etc/neko/plugins
|
||||||
|
|
||||||
|
#
|
||||||
|
# replace server binary in container
|
||||||
|
docker cp "${PWD}/../bin/neko" neko_server_dev:/usr/bin/neko
|
||||||
|
|
||||||
|
#
|
||||||
|
# replace plugin binaries in container
|
||||||
|
if [ -d "${PWD}/../bin/plugins" ];
|
||||||
|
then
|
||||||
|
docker cp "${PWD}/../bin/plugins" neko_server_dev:/etc/neko/plugins
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# restart server
|
||||||
|
docker exec neko_server_dev supervisorctl restart neko
|
19
dev/runtime/Dockerfile
Normal file
19
dev/runtime/Dockerfile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
ARG BASE_IMAGE=neko_server_runtime:latest
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
|
||||||
|
#
|
||||||
|
# install xfce
|
||||||
|
RUN set -eux; apt-get update; \
|
||||||
|
apt-get install -y --no-install-recommends xfce4 xfce4-terminal firefox-esr sudo; \
|
||||||
|
#
|
||||||
|
# add user to sudoers
|
||||||
|
usermod -aG sudo neko; \
|
||||||
|
echo "neko:neko" | chpasswd; \
|
||||||
|
echo "%sudo ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \
|
||||||
|
# clean up
|
||||||
|
apt-get clean -y; \
|
||||||
|
rm -rf /var/lib/apt/lists/* /var/cache/apt/*
|
||||||
|
|
||||||
|
#
|
||||||
|
# copy configuation files
|
||||||
|
COPY supervisord.conf /etc/neko/supervisord/xfce.conf
|
95
dev/runtime/config.yml
Normal file
95
dev/runtime/config.yml
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
capture:
|
||||||
|
video:
|
||||||
|
codec: vp8
|
||||||
|
ids: [ hq, lq ]
|
||||||
|
pipelines:
|
||||||
|
hq:
|
||||||
|
fps: 25
|
||||||
|
gst_encoder: vp8enc
|
||||||
|
gst_params:
|
||||||
|
target-bitrate: (3072 * 650)
|
||||||
|
cpu-used: 4
|
||||||
|
end-usage: cbr
|
||||||
|
threads: 4
|
||||||
|
deadline: 1
|
||||||
|
undershoot: 95
|
||||||
|
buffer-size: (3072 * 4)
|
||||||
|
buffer-initial-size: (3072 * 2)
|
||||||
|
buffer-optimal-size: (3072 * 3)
|
||||||
|
keyframe-max-dist: 25
|
||||||
|
min-quantizer: 4
|
||||||
|
max-quantizer: 20
|
||||||
|
lq:
|
||||||
|
fps: 25
|
||||||
|
gst_encoder: vp8enc
|
||||||
|
gst_params:
|
||||||
|
target-bitrate: (1024 * 650)
|
||||||
|
cpu-used: 4
|
||||||
|
end-usage: cbr
|
||||||
|
threads: 4
|
||||||
|
deadline: 1
|
||||||
|
undershoot: 95
|
||||||
|
buffer-size: (1024 * 4)
|
||||||
|
buffer-initial-size: (1024 * 2)
|
||||||
|
buffer-optimal-size: (1024 * 3)
|
||||||
|
keyframe-max-dist: 25
|
||||||
|
min-quantizer: 4
|
||||||
|
max-quantizer: 20
|
||||||
|
# video:
|
||||||
|
# codec: h264
|
||||||
|
# ids: [ main ]
|
||||||
|
# pipelines:
|
||||||
|
# main:
|
||||||
|
# width: (width / 3) * 2
|
||||||
|
# height: (height / 3) * 2
|
||||||
|
# fps: 20
|
||||||
|
# gst_prefix: "! video/x-raw,format=I420"
|
||||||
|
# gst_encoder: "x264enc"
|
||||||
|
# gst_params:
|
||||||
|
# threads: 4
|
||||||
|
# bitrate: 4096
|
||||||
|
# key-int-max: 15
|
||||||
|
# byte-stream: true
|
||||||
|
# tune: zerolatency
|
||||||
|
# speed-preset: veryfast
|
||||||
|
# gst_suffix: "! video/x-h264,stream-format=byte-stream"
|
||||||
|
screencast:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
server:
|
||||||
|
pprof: true
|
||||||
|
|
||||||
|
desktop:
|
||||||
|
screen: "1920x1080@60"
|
||||||
|
|
||||||
|
member:
|
||||||
|
provider: "object"
|
||||||
|
object:
|
||||||
|
admin_password: "admin"
|
||||||
|
user_password: "neko"
|
||||||
|
# provider: "file"
|
||||||
|
# file:
|
||||||
|
# path: "/home/neko/members.json"
|
||||||
|
|
||||||
|
session:
|
||||||
|
# Allows reconnecting the websocket even if the previous
|
||||||
|
# connection was not closed. Can lead to session hijacking.
|
||||||
|
merciful_reconnect: true
|
||||||
|
# Show inactive cursors on the screen. Can lead to multiple
|
||||||
|
# data sent via WebSockets and additonal rendering cost on
|
||||||
|
# the clients.
|
||||||
|
inactive_cursors: true
|
||||||
|
api_token: "neko123"
|
||||||
|
cookie:
|
||||||
|
# Disabling cookies will result to use Bearer Authentication.
|
||||||
|
# This is less secure, because access token will be sent to
|
||||||
|
# client in playload and accessible via JS app.
|
||||||
|
enabled: false
|
||||||
|
secure: false
|
||||||
|
|
||||||
|
webrtc:
|
||||||
|
icelite: true
|
||||||
|
iceservers:
|
||||||
|
- urls: [ stun:stun.l.google.com:19302 ]
|
||||||
|
# username: foo
|
||||||
|
# credential: bar
|
11
dev/runtime/supervisord.conf
Normal file
11
dev/runtime/supervisord.conf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[program:xfce]
|
||||||
|
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
|
||||||
|
command=/usr/bin/startxfce4
|
||||||
|
stopsignal=INT
|
||||||
|
autorestart=true
|
||||||
|
priority=500
|
||||||
|
user=%(ENV_USER)s
|
||||||
|
stdout_logfile=/var/log/neko/xfce.log
|
||||||
|
stdout_logfile_maxbytes=100MB
|
||||||
|
stdout_logfile_backups=10
|
||||||
|
redirect_stderr=true
|
45
dev/start
Executable file
45
dev/start
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
if [ -z "$(docker images -q neko_server_app 2> /dev/null)" ]; then
|
||||||
|
echo "Image 'neko_server_app' not found. Running ./build first."
|
||||||
|
./build
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $NEKO_PORT ]; then
|
||||||
|
NEKO_PORT="3000"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $NEKO_MUX ]; then
|
||||||
|
NEKO_MUX="52100"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $NEKO_NAT1TO1 ]; then
|
||||||
|
for i in $(ifconfig -l 2>/dev/null); do
|
||||||
|
NEKO_NAT1TO1=$(ipconfig getifaddr $i)
|
||||||
|
if [ ! -z $NEKO_NAT1TO1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z $NEKO_NAT1TO1 ]; then
|
||||||
|
NEKO_NAT1TO1=$(hostname -i 2>/dev/null)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Using app port: ${NEKO_PORT}"
|
||||||
|
echo "Using mux port: ${NEKO_MUX}"
|
||||||
|
echo "Using IP address: ${NEKO_NAT1TO1}"
|
||||||
|
|
||||||
|
# start server
|
||||||
|
docker run --rm -it \
|
||||||
|
--name "neko_server_dev" \
|
||||||
|
-p "${NEKO_PORT}:8080" \
|
||||||
|
-p "${NEKO_MUX}:${NEKO_MUX}/tcp" \
|
||||||
|
-p "${NEKO_MUX}:${NEKO_MUX}/udp" \
|
||||||
|
-e "NEKO_WEBRTC_UDPMUX=${NEKO_MUX}" \
|
||||||
|
-e "NEKO_WEBRTC_TCPMUX=${NEKO_MUX}" \
|
||||||
|
-e "NEKO_WEBRTC_NAT1TO1=${NEKO_NAT1TO1}" \
|
||||||
|
-v "${PWD}/runtime/config.yml:/etc/neko/neko.yml" \
|
||||||
|
-e "NEKO_DEBUG=1" \
|
||||||
|
neko_server_app:latest;
|
Loading…
Reference in New Issue
Block a user