llm, switch open-terminal over to compose so that build dependencies are persistent.

This commit is contained in:
me committed 2026-10-24 17:32:49 -07:00
1 parent 0e1648cc31
commit 65aeea9a93
1 file changed
+111 -65
+111 -65
View File
@@ -228,10 +228,11 @@
- "{{ qwen_code }}"
state: present
- name: Workstation | Linux | Software | LLMs | Docker
- name: Workstation | Linux | Software | LLMs | Docker | Install
ansible.builtin.package:
name:
- docker
- docker-compose
state: present
- name: Workstation | Linux | Software | LLMs | Docker | runit
@@ -521,7 +522,14 @@
ansible.builtin.file:
name: "/var/log/open-terminal"
state: directory
owner: "{{ user }}"
owner: root
mode: "0755"
- name: Workstation | Linux | Software | LLMs | runit | open-terminal | Dir | /usr/local/etc
ansible.builtin.file:
name: "/usr/local/etc/open-terminal"
state: directory
owner: root
mode: "0755"
- name: Workstation | Linux | Software | LLMs | runit | open-terminal | AI-Sandbox | Dir
@@ -543,7 +551,6 @@
export ANDROID_HOME="{{ user_user.home }}/SDKs/Android/Sdk"
export GRADLE_USER_HOME={{ user_user.home }}/.gradle
export GRADLE_HOME={{ user_user.home }}/.gradle
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
@@ -643,83 +650,127 @@
group: "{{ user }}"
mode: "0755"
- name: Workstation | Linux | Software | LLMs | runit | open-terminal | Script | Compose YAML
ansible.builtin.copy:
dest: /usr/local/etc/open-terminal/docker-compose.yml
content: |
#exec docker run \
# --name open-terminal \
# --network=host \
# -v {{ user_user.home }}/AI-Sandbox:/home/user \
# -v {{ user_user.home }}/Code:{{ user_user.home }}/Code \
# -v {{ user_user.home }}/SDKs:{{ user_user.home }}/SDKs \
# -v {{ jdk_jvm }}:{{ jdk_jvm }}:ro \
# -v {{ jdk_etc }}:{{ jdk_etc }}:ro \
# -v {{ jdk_etc17 }}:{{ jdk_etc17 }}:ro \
# -v {{ jdk_etc21 }}:{{ jdk_etc21 }}:ro \
# -v {{ jdk_etc25 }}:{{ jdk_etc25 }}:ro \
# -v /etc/hosts:/etc/hosts:ro \
# -v {{ user_user.home }}/.gradle:{{ user_user.home }}/.gradle \
# -v {{ user_user.home }}/.pub-cache:{{ user_user.home }}/.pub-cache \
# -e OPEN_TERMINAL_FILE_BROWSER_ROOT="/home/user" \
# -e OPEN_TERMINAL_API_KEY="{{ open_terminal_key }}" \
# -e OPEN_TERMINAL_PACKAGES="$packages" \
# -e GOT_EM="$GOT_EM" \
# $image run --port {{ open_terminal_port }}
services:
open-terminal:
build:
context: ./
network: host
container_name: open-terminal
network_mode: host
command: run --port {{ open_terminal_port }}
environment:
- OPEN_TERMINAL_FILE_BROWSER_ROOT=/home/user
- OPEN_TERMINAL_API_KEY={{ open_terminal_key }}
- OPEN_TERMINAL_PACKAGES=
- GOT_EM=true
volumes:
- {{ user_user.home }}/AI-Sandbox:/home/user
- {{ user_user.home }}/Code:{{ user_user.home }}/Code
- {{ user_user.home }}/SDKs:{{ user_user.home }}/SDKs
- {{ jdk_jvm }}:{{ jdk_jvm }}:ro
- {{ jdk_etc }}:{{ jdk_etc }}:ro
- {{ jdk_etc17 }}:{{ jdk_etc17 }}:ro
- {{ jdk_etc21 }}:{{ jdk_etc21 }}:ro
- {{ jdk_etc25 }}:{{ jdk_etc25 }}:ro
- /etc/hosts:/etc/hosts:ro
- {{ user_user.home }}/.gradle:{{ user_user.home }}/.gradle
- {{ user_user.home }}/.pub-cache:{{ user_user.home }}/.pub-cache
owner: root
mode: "0755"
- name: Workstation | Linux | Software | LLMs | runit | open-terminal | Script | Dockerfile
ansible.builtin.copy:
dest: /usr/local/etc/open-terminal/Dockerfile
content: |
FROM ghcr.io/open-webui/open-terminal:latest
USER root
RUN echo "Android"
RUN apt-get update && apt-get install -y \
libc6:amd64 libncurses-dev \
libstdc++6 lib32z1 libbz2-1.0 android-udev-rules
# Debian removed JDK 17, continue serving from the host.
# default-jdk openjdk-17-jdk
RUN echo "Flutter (Main)"
RUN apt-get update && apt-get install -y \
curl git unzip xz-utils zip libglu1-mesa libglu1-mesa
RUN echo "Flutter (Linux)"
RUN apt-get update && apt-get install -y \
clang cmake git ninja-build pkg-config libgtk-3-dev \
liblzma-dev libstdc++-12-dev
RUN echo "Flutter (Android)"
RUN apt-get update && apt-get install -y \
libc6:amd64 libstdc++6 lib32z1 libbz2-1.0
USER user
owner: root
mode: "0755"
- name: Workstation | Linux | Software | LLMs | runit | open-terminal | Script | env
ansible.builtin.copy:
dest: /usr/local/etc/open-terminal/.env
content: |
COMPOSE_BAKE=true
owner: root
mode: "0755"
- name: Workstation | Linux | Software | LLMs | runit | open-terminal | Script | Run
ansible.builtin.copy:
dest: /etc/sv/open-terminal/run
content: |
#!/bin/sh
exec 2>&1
image=ghcr.io/open-webui/open-terminal:latest
packages=""
# Wait for Docker to start up.
while [ ! -S /var/run/docker.sock ]; do sleep 1; done
# Ensure the old container is gone.
# Ensure the old container is stopped.
echo "RUN: Stopping..."
docker stop open-terminal &&
docker compose -f /usr/local/etc/open-terminal/docker-compose.yml down &&
echo "RUN: Container stopped" ||
echo "RUN: Container already stopped."
echo "RUN: Deleting..."
docker rm -f open-terminal &&
echo "RUN: Container deleted" ||
echo "RUN: Container already deleted."
# Check for any new updates in background.
echo "RUN: Updating..."
docker pull $image &
sleep 60 &&
docker compose -f /usr/local/etc/open-terminal/docker-compose.yml \
build --pull &
GOT_EM=false
if curl -sf --max-time 5 -o /dev/null https://hyperling.com; then
# Internet is available, pull extra packages.
GOT_EM=true
# Android, sans default-jdk
packages="$packages \
libc6:amd64 libncurses-dev libstdc++6 lib32z1 libbz2-1.0 \
android-udev-rules \
"
# Flutter (Main)
packages="$packages \
curl git unzip xz-utils zip libglu1-mesa libglu1-mesa \
"
# Flutter (Linux)
packages="$packages \
clang cmake git ninja-build pkg-config libgtk-3-dev \
liblzma-dev libstdc++-12-dev \
"
# Flutter (Android)
packages="$packages \
libc6:amd64 libstdc++6 lib32z1 libbz2-1.0 \
"
fi
export GOT_EM=true
# Start the open-terminal program.
# https://github.com/open-webui/open-terminal#configuration
set -e
exec docker run \
--name open-terminal \
--network=host \
-v {{ user_user.home }}/AI-Sandbox:/home/user \
-v {{ user_user.home }}/Code:{{ user_user.home }}/Code \
-v {{ user_user.home }}/SDKs:{{ user_user.home }}/SDKs \
-v {{ jdk_jvm }}:{{ jdk_jvm }}:ro \
-v {{ jdk_etc }}:{{ jdk_etc }}:ro \
-v {{ jdk_etc17 }}:{{ jdk_etc17 }}:ro \
-v {{ jdk_etc21 }}:{{ jdk_etc21 }}:ro \
-v {{ jdk_etc25 }}:{{ jdk_etc25 }}:ro \
-v {{ user_user.home }}/.gradle:{{ user_user.home }}/.gradle \
-v {{ user_user.home }}/.pub-cache:{{ user_user.home }}/.pub-cache \
-e OPEN_TERMINAL_FILE_BROWSER_ROOT="/home/user" \
-e OPEN_TERMINAL_API_KEY="{{ open_terminal_key }}" \
-e OPEN_TERMINAL_PACKAGES="$packages" \
-e GOT_EM="$GOT_EM" \
$image run --port {{ open_terminal_port }}
# -p {{ open_terminal_port }}:8000
exec docker compose -f /usr/local/etc/open-terminal/docker-compose.yml up
owner: root
mode: "0755"
- name: Workstation | Linux | Software | LLMs | runit | open-terminal | Script | Finish
@@ -729,15 +780,10 @@
{{ runit_finish_sleep }}
echo "FINISH: Stopping..."
docker stop open-terminal &&
docker compose -f /usr/local/etc/open-terminal/docker-compose.yml down &&
echo "FINISH: Container stopped" ||
echo "FINISH: Container already stopped."
echo "FINISH: Deleting..."
docker rm -f open-terminal &&
echo "FINISH: Container deleted" ||
echo "FINISH: Container already deleted."
echo "FINISH: Done!"
mode: "0755"