diff --git a/group_vars/stations/eci_users.yml b/group_vars/stations/eci_users.yml
new file mode 100644
index 0000000000000000000000000000000000000000..eb985df1f96353b585ac4676c6d10ae6fde7f099
--- /dev/null
+++ b/group_vars/stations/eci_users.yml
@@ -0,0 +1,8 @@
+eci_users:
+    - testuser
+    - testuser2
+
+eci_users_uid:
+    testuser: 61
+    testuser2: 62
+  
diff --git a/roles/base/main.yml b/roles/base/main.yml
deleted file mode 100644
index a445f991faac77911537b8269b58034ca324fe85..0000000000000000000000000000000000000000
--- a/roles/base/main.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-- hosts: stations
-  become: True
-  become_user: adamsmith
-  tasks:
-    - name: Update and upgrade system.
-      apt:
-        upgrade: yes
-        update_cache: yes
-        cache_valid_time: 86400
-
-    - name: Install packages
-      apt:
-        name: [ 'nscd',
-                'curl',
-                'wget',
-                'gzip',
-                'atop',
-                'git',
-                'gvfs',
-                'cifs-utils',
-                's3fs',
-                'openjdk-17-jre-headless',
-                'openjdk-17-jdk-headless' ]
-                
diff --git a/roles/base/tasks/main.yml b/roles/base/tasks/main.yml
index 2d31b648db48b5f118a44f084401d2e18bfcb258..89cd89e79c1452828094febd79ce20bfc2c8d9b5 100644
--- a/roles/base/tasks/main.yml
+++ b/roles/base/tasks/main.yml
@@ -25,7 +25,20 @@
     path: /etc/dhcp/dhclient.conf
   notify: restart-network
 
+- name: Create /eci-users.
+  ansible.builtin.file:
+        path: /etc/eci-users
+        state: directory
+        mode: '0711'
+
+- name: Create /eci-users/user.
+  ansible.builtin.file:
+        path: "/etc/eci-users/{{ item }}"
+        state: directory
+        mode: '0711'
+  loop: "{{ eci_users }}"
 
+  
 - name: Create /etc/eci-platform.
   ansible.builtin.file:
         path: /etc/eci-platform
diff --git a/roles/ftpserver/handlers/main.yml b/roles/ftpserver/handlers/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2543d7e99e4c904cc804baa538f8ecaa1477eec3
--- /dev/null
+++ b/roles/ftpserver/handlers/main.yml
@@ -0,0 +1,6 @@
+- name: Restart FTP.
+  listen: restart-ftp
+  ansible.builtin.systemd:
+    state: restarted
+    name: proftpd
+    
diff --git a/roles/ftpserver/tasks/main.yml b/roles/ftpserver/tasks/main.yml
index 4f6eb4cf2b9150cf413b47de9b1acd97e5d03122..5db9b9a84333bc3b6fe122a1ebda84ec6989a712 100644
--- a/roles/ftpserver/tasks/main.yml
+++ b/roles/ftpserver/tasks/main.yml
@@ -1,3 +1,30 @@
 - name: Install packages.
   apt:
     name: [ "proftpd-basic" ]
+
+- name: Ensure group auth exists.
+  file:
+    state: touch
+    path: /etc/proftpd/ftpd.group
+    mode: 0600
+
+- name: Create FTP users.
+  debug:
+    msg: "echo {{ eci_passwords[item] }}|ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name={{item}} --uid={{eci_users_uid[item]}} --home=/udirs/{{item}} --shell=/bin/false --stdin"
+  loop: "{{eci_users}}"
+  notify: restart-ftp
+
+    
+- name: Configure ProFTPd for multiple virtual users.
+  blockinfile:
+    path: /etc/proftpd/proftpd.conf
+    block: |
+      DefaultRoot ~
+      RequireValidShell off
+      AuthUserFile /etc/proftpd/ftpd.passwd
+      AuthGroupFile /etc/proftpd/ftpd.group
+      ServerName "{{hostvars[inventory_hostname].ansible_hostname}}"
+      AuthOrder mod_auth_file.c
+  notify: restart-ftp
+
+