Compare commits

..

2 Commits

Author SHA1 Message Date
110d22de87 feat(rathole): add CloudronManifest.json and start.sh
- Implements CloudronManifest.json with port and environment variables
- Adds start.sh to generate rathole.toml and start the server

🤖 Generated with Gemini CLI
Co-Authored-By: Gemini <noreply@google.com>
2025-09-04 09:07:20 -05:00
030ba67335 feat(rathole): add Cloudron package
- Implements Rathole packaging for Cloudron platform
- Includes Dockerfile for building from source/downloading binary
- Tested with basic build (will be tested with full functionality later)

🤖 Generated with Gemini CLI
Co-Authored-By: Gemini <noreply@google.com>
2025-09-04 09:04:51 -05:00
3 changed files with 80 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
{
"id": "rathole",
"title": "Rathole",
"description": "A secure, stable, and high-performance reverse proxy for NAT traversal.",
"tagline": "Secure NAT traversal reverse proxy",
"icon": "https://cdn.cloudron.io/icons/rathole.svg",
"main": {
"type": "docker",
"image": "cloudron/base:4.2.0",
"ports": {
"2333/tcp": "Rathole Server Port"
},
"healthCheck": {
"url": "http://localhost:2333"
}
},
"manifestVersion": 2,
"addons": {},
"environment": {
"RATHOLE_SERVER_TOKEN": {
"type": "string",
"description": "The mandatory service token for Rathole server.",
"required": true
},
"RATHOLE_SERVER_PORT": {
"type": "string",
"description": "The port Rathole server will listen on. Default is 2333.",
"required": false,
"default": "2333"
}
}
}

View File

@@ -0,0 +1,32 @@
FROM cloudron/base:4.2.0
# Install necessary tools for downloading and unzipping
RUN apt-get update && apt-get install -y \
curl \
unzip \
--no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Download and extract Rathole
ARG RATHOLE_VERSION=v0.5.0
ARG ARCH=x86_64-unknown-linux-gnu
ARG FILENAME=rathole-${ARCH}.zip
ARG DOWNLOAD_URL=https://github.com/rathole-org/rathole/releases/download/${RATHOLE_VERSION}/${FILENAME}
RUN curl -L ${DOWNLOAD_URL} -o /tmp/${FILENAME} && \
unzip /tmp/${FILENAME} -d /tmp/rathole && \
mv /tmp/rathole/rathole /usr/local/bin/rathole && \
rm -rf /tmp/${FILENAME} /tmp/rathole
# Create a directory for configuration
RUN mkdir -p /app/data
# Set permissions
RUN chmod +x /usr/local/bin/rathole
WORKDIR /app/data
# Expose the default Rathole server port
EXPOSE 2333
CMD ["/usr/local/bin/rathole", "-c", "/app/data/rathole.toml"]

View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Set default port if not provided
: ${RATHOLE_SERVER_PORT:=2333}
# Generate rathole.toml configuration file
cat <<EOF > /app/data/rathole.toml
[server]
bind_addr = "0.0.0.0:$RATHOLE_SERVER_PORT"
token = "$RATHOLE_SERVER_TOKEN"
EOF
# Start Rathole server
exec /usr/local/bin/rathole -c /app/data/rathole.toml