vCards Docker & Self-Hosted Deployment

GitHub

️ vCards δΈ­ε›½ι»„ι‘΅ - δΌ˜εŒ– iOS/Android ζ₯η”΅γ€δΏ‘ζ―η•Œι’δ½“ιͺŒ

6,432 stars TypeScript TypeScript 1 file Β· ~618 tokens #china#ios#macos#vcards
1. Pull Image (DOCKERHUB) docker pull metowolf/vCards:latest
2. Docker Run (1-Click Launch) docker run -d --name vcards -p 5232:5232 --restart always metowolf/vcards:latest
3. Podman Run podman run -d --name vcards -p 5232:5232 --restart always metowolf/vcards:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/metowolf/vcards:latest
5. ORAS Pull (OCI Artifact) oras pull metowolf/vcards:latest
Dockerfile
FROM oven/bun:1.4.2-alpine AS builder

# radicale δ»»εŠ‘δΎθ΅– git 读取 yaml/png ηš„ζδΊ€ζ—Άι—΄δ½œδΈΊ REV
RUN apk add --no-cache git

WORKDIR /app
COPY . .
RUN bun install --frozen-lockfile && bun run radicale


FROM alpine:edge

RUN apk add --no-cache \
    radicale py3-six\
  && rm -rf /var/cache/apk/* \
  \
  && { \
    echo '[root]'; \
    echo 'user: .+'; \
    echo 'collection:'; \
    echo 'permissions: R'; \
    echo; \
    echo '[principal]'; \
    echo 'user: .+'; \
    echo 'collection: {user}'; \
    echo 'permissions: R'; \
    echo; \
    echo '[collections]'; \
    echo 'user: .+'; \
    echo 'collection: {user}/[^/]+'; \
    echo 'permissions: rR'; \
  } > /etc/radicale/rights \
  \
  && { \
    echo '[server]'; \
    echo 'hosts = 0.0.0.0:5232, [::]:5232'; \
    echo; \
    echo '[auth]'; \
    echo 'type = none'; \
    echo; \
    echo '[web]'; \
    echo 'type = none'; \
    echo; \
    echo '[storage]'; \
    echo 'type = multifilesystem'; \
    echo 'filesystem_folder = /app/vcards'; \
    echo; \
    echo '[rights]'; \
    echo 'type = from_file'; \
    echo 'file = /etc/radicale/rights'; \
  } > /etc/radicale/config

COPY --from=builder /app/radicale/ios/ /app/vcards/collection-root/cn/
COPY --from=builder /app/radicale/macos/ /app/vcards/collection-root/cnmacos/

EXPOSE 5232

CMD ["radicale"]