Initial commit
This commit is contained in:
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
FROM node:20-slim
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
git \
|
||||||
|
curl \
|
||||||
|
wget \
|
||||||
|
jq \
|
||||||
|
netcat-openbsd \
|
||||||
|
socat \
|
||||||
|
iputils-ping \
|
||||||
|
iproute2 \
|
||||||
|
dnsutils \
|
||||||
|
python3 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
ARG UID=1000
|
||||||
|
ARG GID=1000
|
||||||
|
|
||||||
|
RUN npm install -g @anthropic-ai/claude-code
|
||||||
|
|
||||||
|
RUN groupmod -g $GID node && usermod -u $UID -g $GID -l claude node && usermod -d /home/claude -m claude
|
||||||
|
USER claude
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
|
|
||||||
|
CMD ["claude"]
|
||||||
1
build.sh
Executable file
1
build.sh
Executable file
@@ -0,0 +1 @@
|
|||||||
|
sudo UID=$(id -u) GID=$(id -g) docker compose build
|
||||||
26
docker-compose.yml
Normal file
26
docker-compose.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
services:
|
||||||
|
claude-code:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
UID: ${UID:-1000}
|
||||||
|
GID: ${GID:-1000}
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
environment:
|
||||||
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
||||||
|
- TERM=xterm-256color
|
||||||
|
- COLORTERM=truecolor
|
||||||
|
volumes:
|
||||||
|
- ./workspace:/workspace
|
||||||
|
- ./claude-home:/home/claude
|
||||||
|
networks:
|
||||||
|
- claude-isolated
|
||||||
|
|
||||||
|
networks:
|
||||||
|
claude-isolated:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 172.28.0.0/24
|
||||||
|
gateway: 172.28.0.1
|
||||||
5
etc_conf/daemon.json
Normal file
5
etc_conf/daemon.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"default-address-pools": [
|
||||||
|
{"base": "172.16.0.0/13", "size": 24}
|
||||||
|
]
|
||||||
|
}
|
||||||
33
etc_conf/nftables.conf
Normal file
33
etc_conf/nftables.conf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/nft -f
|
||||||
|
# vim:set ts=2 sw=2 et:
|
||||||
|
|
||||||
|
destroy table inet filter
|
||||||
|
destroy table ip filter-custom
|
||||||
|
|
||||||
|
table inet filter {
|
||||||
|
chain input {
|
||||||
|
type filter hook input priority filter
|
||||||
|
policy drop
|
||||||
|
|
||||||
|
ct state invalid drop comment "early drop of invalid connections"
|
||||||
|
ct state {established, related} accept comment "allow tracked connections"
|
||||||
|
iif lo accept comment "allow from loopback"
|
||||||
|
ip protocol icmp accept comment "allow icmp"
|
||||||
|
meta l4proto ipv6-icmp accept comment "allow icmp v6"
|
||||||
|
tcp dport ssh accept comment "allow sshd"
|
||||||
|
pkttype host limit rate 5/second counter reject with icmpx type admin-prohibited
|
||||||
|
counter
|
||||||
|
}
|
||||||
|
|
||||||
|
chain forward {
|
||||||
|
type filter hook forward priority filter + 1; policy drop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table ip filter-custom {
|
||||||
|
chain forward {
|
||||||
|
type filter hook forward priority filter - 1; policy accept;
|
||||||
|
ct state established,related accept
|
||||||
|
ip saddr 172.16.0.0/12 ip daddr 192.168.0.0/16 drop
|
||||||
|
}
|
||||||
|
}
|
||||||
11
start-with-local.sh
Executable file
11
start-with-local.sh
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
sudo \
|
||||||
|
ANTHROPIC_BASE_URL=http://192.168.2.99:11434 \
|
||||||
|
ANTHROPIC_AUTH_TOKEN=ollama \
|
||||||
|
ANTHROPIC_API_KEY="" \
|
||||||
|
UID=$(id -u) \
|
||||||
|
GID=$(id -g) \
|
||||||
|
docker compose run \
|
||||||
|
-e ANTHROPIC_BASE_URL \
|
||||||
|
-e ANTHROPIC_AUTH_TOKEN \
|
||||||
|
-e ANTHROPIC_API_KEY \
|
||||||
|
claude-code claude --model gpt-oss:20b --dangerously-skip-permissions "$@"
|
||||||
Reference in New Issue
Block a user