Skip to content

Access & security

Pages

Publish a static HTML file or folder and get a shareable link.

Pages lets you publish a report, prototype or slide deck made of HTML, CSS and JavaScript, without setting up an app. Point the CLI at a file or folder and you get a link.

Publish a page

elula pages publish ./deck.html
elula pages publish ./site/ --title "Q3 Review"
elula pages publish ./notes.html --random
OptionWhat it does
--titleTitle for the page, used in the URL. Defaults to the file or folder name.
--randomUse an unguessable random URL instead of one based on your handle and title.
--privateOnly people in your workspace, or with an email on its verified team domain, can open the page. They sign in to Elula first.
--publicAnyone with the link can open the page.
--handleClaim this handle on your first publish, for scripts and CI.
--openOpen the page in your browser after publishing.

A folder can hold several files, such as index.html, about.html, css/ and img/. Elula serves index.html as the entry page. If there's no index.html, it uses the first .html file by name. Every upload needs at least one .html file.

Hidden files (names starting with .) are skipped when you publish a folder.

You can also publish from the dashboard: open Pages, click Publish a page, and drop in a file or folder.

Private and public pages

A private page asks visitors to sign in to Elula. Workspace members and anyone with an email on the workspace's verified team domain can then open it; everyone else sees "This page is private". A public page opens for anyone with the link.

Without --private or --public, a page follows the workspace's default access for new apps. Private pages need a verified team domain, the same as private apps. See Access control.

Change it later from the Pages screen, or with:

elula pages access <slug> private
elula pages access <slug> public

The person who published the page and workspace owners and admins can change it.

Page URLs

There are two kinds of URL:

KindPath
Custom (default)/p/<handle>/<title>
Random (--random)a long random token

Your handle is set once and used in all your custom page URLs. The first time you publish with a custom URL, the CLI asks you to pick one. It can't be changed later.

Publishing again with the same title replaces your existing page at the same URL. If someone else already has that URL, Elula adds a number to yours instead of overwriting theirs.

Custom URLs contain your handle and the title, so they are easy to guess. Use --private for anything only your team should see. Don't put passwords or keys in a page. Use Sharing secrets instead.

Update, list, open and delete

elula pages list                                  # your pages, with URL and view count
elula pages update <slug> ./deck.html            # replace the content, keep the URL
elula pages open <slug>                           # open in your browser
elula pages rm <slug>                             # delete; the link stops working at once

The slug is everything after /p/ in the URL, for example alice/q3-review or a random token. Only the person who published a page can update or delete it.

Your published pages also appear on the Pages screen in the dashboard.

Limits

LimitValue
Files per page200
Size of one file10 MB
Total size of a page50 MB
Title length200 characters
New pages per person per day20 (updates don't count)

What is blocked

Pages are for web content, not file downloads. Elula rejects:

  • Executables and scripts by extension, such as .exe, .msi, .bat, .ps1, .dmg, .pkg, .sh, .deb and .rpm.
  • Executables and archives detected by their contents, even if renamed, such as Windows, Linux and macOS executables, and ZIP, RAR, 7-Zip, gzip, xz, bzip2 and tar archives.

How pages are served

Pages are served in a sandbox (Content-Security-Policy: sandbox allow-scripts). Scripts run and can load resources from public CDNs, but a page can't read cookies or call Elula on behalf of the person viewing it.

When your workspace's Google Cloud is connected, page files are stored in the elula-pages-<project-id> bucket that the setup command creates in your project. See Connect Google Cloud.