#!/bin/bash # Fixed container name CONTAINER_NAME="$PARAM_TENANT-table-editor" TABLE_EDITOR_PORT="5757" # Paths HOST_BASE="/opt/gbo/tenants/$PARAM_TENANT/table-editor" HOST_DATA="$HOST_BASE/data" HOST_CONF="$HOST_BASE/conf" HOST_LOGS="$HOST_BASE/logs" BIN_PATH="/opt/gbo/bin" # Create host directories mkdir -p "$HOST_DATA" "$HOST_CONF" "$HOST_LOGS" chmod -R 750 "$HOST_BASE" # Launch container lxc launch images:debian/12 "$CONTAINER_NAME" -c security.privileged=true # Wait for container to be ready sleep 10 # Container setup lxc exec "$CONTAINER_NAME" -- bash -c " useradd --system --no-create-home --shell /bin/false gbuser apt-get update apt-get install -y wget curl # Create directories mkdir -p \"$BIN_PATH\" /opt/gbo/data /opt/gbo/conf /opt/gbo/logs # Download and install NocoDB binary cd \"$BIN_PATH\" curl http://get.nocodb.com/linux-x64 -o nocodb -L chmod +x nocodb " # Set permissions TE_UID=$(lxc exec "$CONTAINER_NAME" -- id -u gbuser) TE_GID=$(lxc exec "$CONTAINER_NAME" -- id -g gbuser) HOST_TE_UID=$((100000 + TE_UID)) HOST_TE_GID=$((100000 + TE_GID)) chown -R "$HOST_TE_UID:$HOST_TE_GID" "$HOST_BASE" # Add directory mappings lxc config device add "$CONTAINER_NAME" tedata disk source="$HOST_DATA" path=/opt/gbo/data lxc config device add "$CONTAINER_NAME" teconf disk source="$HOST_CONF" path=/opt/gbo/conf lxc config device add "$CONTAINER_NAME" telogs disk source="$HOST_LOGS" path=/opt/gbo/logs # Create systemd service lxc exec "$CONTAINER_NAME" -- bash -c " cat > /etc/systemd/system/table-editor.service <