Sign-up — install and set up Nextcloud registration

Installation

  1. Make sure Nextcloud can send e-mail (Administration settings → Basic settings → Email server, "Send email" test). Sign-up sends the confirmation codes, the decisions and the welcome e-mails through it.
  2. Sign in to your MediaLab Works account, open Licenses and download signup-x.y.z.tar.gz.
  3. Extract it into the Nextcloud apps/ (or custom_apps/) folder so you get apps/signup/, owned by the web-server user.
  4. Enable it: sudo -u www-data php occ app:enable signup, or from the Apps page.
  5. Administration settings → Sign-up → License: paste your license key (or start the free 30-day trial) and save. The section shows Active.
  6. Review the settings below, then open the registration page (https://<your-cloud>/index.php/apps/signup/); the sign-in page now shows Create an account.

License

The license is checked once a day; without internet Sign-up keeps working for 7 days after the last successful check. Without a valid license visitors see a neutral "temporarily unavailable" page, the link on the sign-in page disappears, the clean-up job stops and Cashier creates paid accounts itself. Existing accounts are never touched and nothing is deleted. The settings page shows the reason and the License section.

Settings (Administration settings → Sign-up)

Registration — open or closed; what visitors can choose: free accounts and paid plans (paid plans appear only when Cashier offers them), free accounts only, or paid plans only; the text of the link on the sign-in page in English and Romanian.

E-mail confirmation — on (recommended) or off; code and link, code only or link only; how long an unconfirmed registration lives (1–168 hours). Without confirmation the account is created as soon as the form is sent, and the page has to say when an address already has an account.

Administrator approval — when on, a free account is created disabled after the e-mail confirmation and waits under Registrations → Waiting for approval; administrators get a Nextcloud notification and (optionally) an e-mail. Approve enables the account, adds it to the groups and e-mails the user; Reject deletes the never-used account and the registration data and e-mails the user, with your reason if you give one. Paid accounts never wait: the payment activates them.

New accounts — login name (the e-mail address, ana.popescu from the name, or chosen by the visitor; everyone can also sign in with the e-mail address), storage quota (empty = the cloud's default), groups, welcome e-mail with your own text.

Form fields — the e-mail address, the password and the acceptance of the terms are always asked. For first name, last name, phone, company, street address, city, postal code and country choose Not asked, Optional or Required; add your own fields (key, type, labels in English and Romanian, options for a list); order them with the arrows. Phone, company and address also go to the user's profile (private); all values are shown to administrators next to the registration and to the user under Personal info → Registration details.

E-mail addresses and abuse protection — only these domains may register (empty = all; *.example.org means the subdomains), these domains may not, block temporary addresses (built-in list plus the list MediaLab Works keeps up to date, delivered with a valid license), minimum time to fill in the form, registrations per network address per day. Always on: Nextcloud's rate limits and brute-force protection, a hidden field for bots, 5 confirmation e-mails per address per day and 5 attempts per code.

Terms and privacy — addresses of your terms of use and privacy policy (the visitor ticks a box to accept them) and the privacy note under the form.

The registration, step by step

  1. The visitor opens the page from Create an account on the sign-in page (or a link you share), chooses a free account or a plan, and fills in the form.
  2. With confirmation on, an e-mail brings a six-digit code and/or a link. The code is typed on the page; the link can be opened on any device — the page continues by itself. If the address already has an account, the e-mail says so and points to "Forgot password?".
  3. Free account without approval: the account is created and the visitor is signed in. With approval: the page says the registration waits for an administrator.
  4. Paid plan: the visitor goes to the Stripe payment page and back; the account is created as soon as Stripe confirms the payment and the visitor is signed in.

Paid plans with Cashier

  1. Install Cashier 1.2 or newer, connect Stripe and create your plans (see the Cashier guide). Sign-up detects Cashier automatically; Sign-up → Paid plans (Cashier) shows whether plans are offered and, if not, why (no license, Stripe not connected, no visible plan).
  2. Choose Free accounts and paid plans or Paid plans only under Registration.
  3. The account of a paid sign-up is created by Sign-up with the password and the data from the form, enabled at once, with the plan's quota and groups set by Cashier. If the payment arrives after the registration expired, the account is still created and the user gets a link to set a password.
  4. A plan's direct link (Cashier → Plans) opens Sign-up's page with that plan chosen; Cashier's own sign-up link leads here too.

Unpaid invoices: suspension, never deletion

  • Monthly (or yearly) renewals are charged by Stripe. A day or so before, the user gets a "New invoice" e-mail; after a successful charge, a receipt.
  • If the charge fails, the user gets a "Payment failed" e-mail. During Cashier's grace period (Cashier → Rules, 0 to 90 days; 0 means right away) the account keeps working.
  • After the grace period an account registered through Sign-up is suspended (disabled): nobody can sign in. Files, shares and data stay exactly as they are. The user gets a "Your account has been suspended" e-mail with the link to pay the open invoice. If they lost it, the registration page links to Cashier's "Pay an overdue invoice" page, which e-mails the link again.
  • As soon as the invoice is paid, the account is active again (and the user gets an e-mail).
  • In Sign-up → Paid plans → When a monthly invoice is not paid you can choose Follow Cashier's rule instead (read-only or suspended, as set in Cashier).
  • Nothing in Sign-up or Cashier ever deletes an account or its files for an unpaid invoice. The only automatic clean-up removes registrations that never got an account (address never confirmed, payment never made). Accounts are deleted only by an administrator (Nextcloud's normal user deletion), which also removes the user's registration data.

Registrations list

Sign-up → Registrations: Waiting for approval, Waiting for confirmation or payment (no account yet; you can remove one), Recent accounts (last 30 days) and Rejected. Each card shows the e-mail address, the login name, the type (free / paid), the form data, the dates and the network address.

Captcha and other add-ons (developers)

Another app can add a captcha to the form: listen to OCA\Signup\Public\Event\RenderRegistrationFormEvent (add your script and style, allow your domains in the page's content security policy, announce your inputs with addInput(); your widget goes into the element #signup-captcha) and to OCA\Signup\Public\Event\ValidateRegistrationEvent (read the inputs with getExtra(), refuse with reject($message)).

occ

  • occ signup:cleanup — removes expired registrations now (the hourly job does it too) and shows how many are waiting. Accounts are never touched.

Troubleshooting

  • No e-mail arrives: check the e-mail server settings and the spam folder; the page allows a new e-mail after a minute (5 per day).
  • "That was very fast": the form was sent faster than the minimum time; send it again.
  • "Too many attempts": Nextcloud's rate limit for the network address; wait a few minutes.
  • No plans on the page: see Sign-up → Paid plans (Cashier) and Administration → Overview (check "Cashier (registration page)").
  • A paid user cannot sign in: look for the subscription in Cashier → Subscribers; a suspended account is restored by paying the open invoice.