Skip to content

EmDash聽#2434

Open
Open

Description

@MickLesk

Name of the Script

EmDash

Script Type

CT (LXC Container)

Script path

No response

Where does it run?

Proxmox VE host

Does this script support arm64?

arm64 supported

馃搵 Script Details

EmDash is a full-stack TypeScript CMS built on Astro and meant as a modern successor to WordPress. It brings an admin panel with a visual schema builder, a media library, menus, widgets, revisions and scheduled publishing, stores rich text as structured Portable Text, runs plugins in sandboxes with declared capabilities, imports WordPress sites and ships an MCP server for AI tools. This script creates a site from one of the Node.js templates with upstream's create-emdash, builds it against the published packages and runs it on Node.js with SQLite and local media storage.

Activity

  1. community-scripts-issue-bot commented on Oct 16, 2026

    @community-scripts-issue-bot

    The EmDash script is ready for testing. Run it in the Proxmox VE shell (or on an Incus host) to create a container:

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/DevScripts/main/ct/emdash.sh)"
    

    The admin at /_emdash/admin signs in with passkeys only; there are no passwords. Browsers offer passkeys only on HTTPS under a hostname or on localhost, never on an IP address, with or without a self-signed certificate. http://:4321 serves the public site, but the setup wizard cannot create the first account there.
    To set EmDash up for real, put it behind a reverse proxy or tunnel with a trusted certificate (Caddy, Nginx Proxy Manager, Traefik, Cloudflare Tunnel) that forwards to http://:4321, set EMDASH_SITE_URL in /opt/emdash_data/.env to that address (e.g. https://blog.example.com), then rebuild: cd /opt/emdash && set -a && . /opt/emdash_data/.env && set +a && pnpm build && systemctl restart emdash. Open https://blog.example.com/_emdash/admin and create your account; the first one becomes the administrator. Setting var_emdash_url at install time skips the rebuild.
    To try EmDash without a domain, set EMDASH_SITE_URL=http://localhost:4321, rebuild as above, run ssh -L 4321:localhost:4321 root@ on your computer and open http://localhost:4321/_emdash/admin. While the site URL is localhost, links and images on the public site point there too. Passkeys made there only work at localhost: when you move to a domain, stay signed in at localhost, switch EMDASH_SITE_URL and rebuild, then use Settings > General > Continue on to add a passkey for the new address.
    EMDASH_SITE_URL must be exactly the address in the browser bar, because passkeys are bound to its hostname. Extra hostnames under the same domain go in EMDASH_ALLOWED_ORIGINS (comma-separated). Behind a reverse proxy, also set EMDASH_TRUSTED_PROXY_HEADERS=x-forwarded-for once only the proxy can reach port 4321: without it EmDash on Node.js cannot see client addresses and skips the per-IP rate limits on sign-in, magic-link and signup requests.
    /opt/emdash is your Astro project: the template's layouts, components and astro.config.mjs are yours to change, and a rebuild (command above) applies the changes. Updates only move the emdash package to the new release and rebuild; they never replace template files, so new template designs do not reach existing sites.
    The SQLite database, the uploaded media and the .env with EMDASH_ENCRYPTION_KEY live in /opt/emdash_data, outside the site; back up that folder. Without the key, plugin secrets saved in the database cannot be decrypted.
    Updates follow the emdash@x.y.z releases; the repository tags every plugin as well. Core database migrations run on the first request after the update. Before an update across a major version, take a backup or snapshot and read the release notes: they can require changes to your site's own code, which the update does not make.
    Magic-link sign-in, invitations and account recovery need an email provider plugin (e.g. emdash-smtp, see the Email Setup guide). Without one, invitation links have to be copied from the Users page.
    Install and every update build the site with Astro, which peaks at about 2.3 GB of RAM; with 2 GB the build only fits by swapping. The running site needs about 160 MB.

    Note: This is not in the official repo yet鈥攊t's just a dev version! After merging into ProxmoxVE, it will need to be recreated.

    Discord testing thread: https://discord.com/channels/1302816934508630047/1560567057479639040

  2. community-scripts-issue-bot commented on Oct 16, 2026

    @community-scripts-issue-bot

    hamid.au via Discord 路 2026-10-16 11:08 UTC

    Thanks a lot for creating this script. I will share my feedback after testing it shortly

    Mirrored from the Discord thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions