154 lines
8.1 KiB
HTML
154 lines
8.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
|
|
|
|
<title>Cloudron Setup</title>
|
|
<meta name="description" content="Cloudron Setup">
|
|
|
|
<link id="favicon" href="/api/v1/cloudron/avatar" rel="icon" type="image/png">
|
|
|
|
<!-- contains all thing already using import statement -->
|
|
<script type="module" src="./src/modules.js"></script>
|
|
|
|
<!-- Theme CSS -->
|
|
<link type="text/css" rel="stylesheet" href="./src/theme.scss">
|
|
|
|
<!-- jQuery-->
|
|
<script type="text/javascript" src="/js/jquery.min.js"></script>
|
|
|
|
<!-- async -->
|
|
<script type="text/javascript" src="/js/async-3.2.0.min.js"></script>
|
|
|
|
<!-- Angularjs scripts -->
|
|
<script type="text/javascript" src="/js/angular.min.js"></script>
|
|
<script type="text/javascript" src="/js/angular-loader.min.js"></script>
|
|
<script type="text/javascript" src="/js/angular-cookies.min.js"></script>
|
|
<script type="text/javascript" src="/js/angular-md5.min.js"></script>
|
|
<script type="text/javascript" src="/js/angular-ui-notification.js"></script>
|
|
|
|
<!-- Angular directives for bootstrap https://angular-ui.github.io/bootstrap/ -->
|
|
<script type="text/javascript" src="/js/ui-bootstrap-tpls-1.3.3.min.js"></script>
|
|
|
|
<!-- Angular translate https://angular-translate.github.io/ -->
|
|
<script type="text/javascript" src="/js/angular-translate.min.js"></script>
|
|
<script type="text/javascript" src="/js/angular-translate-loader-static-files.min.js"></script>
|
|
<script type="text/javascript" src="/js/angular-translate-storage-cookie.min.js"></script>
|
|
<script type="text/javascript" src="/js/angular-translate-storage-local.min.js"></script>
|
|
|
|
<!-- Showdown (markdown converter) -->
|
|
<script type="text/javascript" src="/js/showdown-1.9.1.min.js"></script>
|
|
|
|
<!-- Setup Application -->
|
|
<script type="text/javascript" src="/js/activation.js?%VITE_CACHE_ID%"></script>
|
|
<script type="text/javascript" src="/js/client.js?%VITE_CACHE_ID%"></script>
|
|
<script type="text/javascript" src="/js/utils.js?%VITE_CACHE_ID%"></script>
|
|
|
|
</head>
|
|
|
|
<body class="setup" ng-app="Application" ng-controller="SetupController">
|
|
|
|
<a class="offline-banner animateMe" ng-show="client.offline" ng-cloak href="https://docs.cloudron.io/troubleshooting/" target="_blank"><i class="fa fa-circle-notch fa-spin"></i> Cloudron is offline. Reconnecting...</a>
|
|
|
|
<div class="main-container" ng-show="initialized">
|
|
<div class="row" ng-show="view === 'owner'">
|
|
<div class="col-md-6 col-md-offset-3">
|
|
<div class="card" style="max-width: none; padding: 20px;">
|
|
<form role="form" name="ownerForm" ng-submit="owner.submit()" novalidate>
|
|
<div class="row">
|
|
<div class="col-md-12 text-center">
|
|
<h1>Welcome to Cloudron</h1>
|
|
<h3>Set up Admin Account</h3>
|
|
<p class="has-error text-center" ng-show="owner.error.generic">{{ owner.error.generic }}</p>
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
<br/>
|
|
<div class="row">
|
|
<div class="col-md-8 col-md-offset-2">
|
|
<div class="form-group" ng-class="{ 'has-error': ownerForm.displayName.$dirty && ownerForm.displayName.$invalid }">
|
|
<label class="control-label" for="inputDisplayName">Full Name</label>
|
|
<input type="text" class="form-control" ng-model="owner.displayName" id="inputDisplayName" name="displayName" placeholder="Full Name" required autocomplete="off" ng-disabled="owner.busy" autofocus>
|
|
</div>
|
|
<div class="form-group" ng-class="{ 'has-error': (ownerForm.email.$dirty && ownerForm.email.$invalid) || (!ownerForm.email.$dirty && owner.error.email) }">
|
|
<label class="control-label" for="inputEmail">Email <sup><a ng-href="https://docs.cloudron.io/installation/#admin-account" class="help" target="_blank" tabIndex="-1"><i class="fa fa-question-circle"></i></a></sup></label>
|
|
<input type="email" class="form-control" ng-model="owner.email" id="inputEmail" name="email" placeholder="Email" required autocomplete="off" ng-disabled="owner.busy">
|
|
<small>A valid email is required for Let's Encrypt certificates. This email is local to your Cloudron. </small>
|
|
</div>
|
|
<div class="form-group" ng-class="{ 'has-error': (ownerForm.username.$dirty && ownerForm.username.$invalid) || (!ownerForm.username.$dirty && owner.error.username) }">
|
|
<label class="control-label" for="inputUsername">Username</label>
|
|
<input type="text" class="form-control" ng-model="owner.username" id="inputUsername" name="username" placeholder="Username" ng-maxlength="512" ng-minlength="1" required autocomplete="off" ng-disabled="owner.busy">
|
|
<small>{{ owner.error.username }}</small>
|
|
</div>
|
|
<div class="form-group" style="margin-bottom: 0;" ng-class="{ 'has-error': ownerForm.password.$dirty && ownerForm.password.$invalid }">
|
|
<label class="control-label" for="inputPassword">Password</label>
|
|
<input type="password" class="form-control" ng-model="owner.password" id="inputPassword" name="password" placeholder="Password" ng-pattern="/^.{8,}$/" required autocomplete="off" ng-disabled="owner.busy" password-reveal>
|
|
<small><span ng-show="ownerForm.password.$dirty && ownerForm.password.$invalid">Password must be at least 8 characters</span> </small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
<br/>
|
|
<div class="row">
|
|
<div class="col-md-12 text-center">
|
|
<button type="submit" class="btn btn-success" ng-disabled="ownerForm.$invalid || owner.busy"><i class="fa fa-circle-notch fa-spin" ng-show="owner.busy"></i> Create Admin</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" ng-show="view === 'finished'">
|
|
<div class="col-md-6 col-md-offset-3">
|
|
<div class="card" style="max-width: none; padding: 20px 40px;">
|
|
<div class="row">
|
|
<div class="col-md-12 text-center">
|
|
<h1>Cloudron is ready to use</h1>
|
|
</div>
|
|
</div>
|
|
<p>
|
|
Before you start:
|
|
<ul class="fa-ul">
|
|
<li><i class="fa-li fa fa-users"></i>
|
|
<b>User management</b>: Cloudron has a central user directory. When installing an app,
|
|
you can set it up to authenticate against this directory.
|
|
</li>
|
|
<br/>
|
|
<li><i class="fa-li fa fa-envelope-open"></i>
|
|
<b>Email Configuration</b>: Apps are configured to send email based on the settings in the Email view.
|
|
This saves you the trouble of having to configure mail settings inside each app.
|
|
</li>
|
|
<br/>
|
|
<li><i class="fa-li fa fa-archive"></i>
|
|
<b>Backups</b>: Store your backups on storage services completely independent from your server.
|
|
You can use backups to seamlessly migrate your setup to another server.
|
|
</li>
|
|
<br/>
|
|
<li><i class="fa-li fa fa-birthday-cake"></i>
|
|
<b>Updates</b>: The Cloudron team tracks upstream releases and publishes app updates after testing.
|
|
Your apps are kept fresh & secure.
|
|
</li>
|
|
</ul>
|
|
</p>
|
|
<br/>
|
|
<br/>
|
|
<div class="row">
|
|
<div class="col-md-12 text-center">
|
|
<a class="btn btn-success" ng-href="firstTimeLoginUrl">Proceed to Dashboard</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<footer class="text-center">
|
|
<span class="text-muted">©2022 <a href="https://cloudron.io" target="_blank">Cloudron</a></span>
|
|
<span class="text-muted"><a href="https://forum.cloudron.io" target="_blank">Forum <i class="fa fa-comments"></i></a></span>
|
|
</footer>
|
|
|
|
</body>
|
|
</html>
|