File size: 2,212 Bytes
c13e07b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3408ae5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
ENV HOSTNAME=Nobita

# -----------------------------
# Install Required Packages
# -----------------------------
RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates \
    curl \
    wget \
    git \
    sudo \
    qemu-system-x86 \
    cloud-image-utils \
    openssh-client \
    htop \
    neovim \
    && rm -rf /var/lib/apt/lists/*

# -----------------------------
# Install code-server
# -----------------------------
RUN curl -fsSL https://code-server.dev/install.sh | sh

# -----------------------------
# Create VM Directory
# -----------------------------
WORKDIR /workspace
RUN mkdir -p /vm/debian13

# -----------------------------
# Download Debian 13 QCOW2
# -----------------------------
RUN wget https://cloud.debian.org/images/cloud/trixie/daily/latest/debian-13-generic-amd64-daily.qcow2 \
    -O /vm/debian13/debian13.qcow2

# -----------------------------
# Proper Cloud-Init Config (ROOT + NN WORKING)
# -----------------------------
RUN cat <<EOF > /vm/debian13/user-data
#cloud-config
ssh_pwauth: true
disable_root: false

chpasswd:
  list: |
    root:root
    nn:nn
  expire: false

users:
  - default
  - name: nn
    groups: sudo
    shell: /bin/bash
    sudo: ALL=(ALL) ALL
EOF

RUN cat <<EOF > /vm/debian13/meta-data
instance-id: debian13
local-hostname: debian13
EOF

RUN cloud-localds /vm/debian13/seed.iso \
    /vm/debian13/user-data \
    /vm/debian13/meta-data

# -----------------------------
# Expose Ports
# -----------------------------
EXPOSE 7860 2222

# -----------------------------
# Smart Startup (Auto RAM + CPU)
# -----------------------------
CMD bash -c "\
TOTAL_RAM=\$(awk '/MemTotal/ {print int(\$2/1024)}' /proc/meminfo); \
VM_RAM=\$((TOTAL_RAM*70/100)); \
CPU_CORES=\$(nproc); \
echo \"Detected RAM: \$TOTAL_RAM MB\"; \
echo \"Allocating VM RAM: \$VM_RAM MB\"; \
echo \"Detected CPU Cores: \$CPU_CORES\"; \
qemu-system-x86_64 \
-m \$VM_RAM \
-smp \$CPU_CORES \
-drive file=/vm/debian13/debian13.qcow2,format=qcow2 \
-drive file=/vm/debian13/seed.iso,format=raw \
-net nic \
-net user,hostfwd=tcp::2222-:22 \
-nographic & \
code-server --bind-addr 0.0.0.0:7860 --auth none"