Great answer by @Micha! You could also create a script and use this instead of the modeller. Benefits of a script is that you can control how things should be executed and when etc. You can create a script by going to:
Processing Toolbox > Scripts > Tools > Create new script
And then use something like the following (note: change the parameters inside the rseries algorithm to fit your needs):
##Example=name
##Select_directory=Folder
import glob, os
from PyQt4.QtCore import QFileInfo
from qgis.core import QgsRasterLayer, QgsRectangle
os.chdir(Select_directory)
rlist = []
extent = QgsRectangle()
extent.setMinimal()
for raster in glob.glob("*.tif"):
fileInfo = QFileInfo(raster)
baseName = fileInfo.baseName()
rlayer = QgsRasterLayer(raster, baseName)
# Combine raster layers to list
rlist.append(rlayer)
# Combine raster extents
extent.combineExtentWith(rlayer.extent())
# Get extent
xmin = extent.xMinimum()
xmax = extent.xMaximum()
ymin = extent.yMinimum()
ymax = extent.yMaximum()
# Run algorithm and set relevant parameters
processing.runalg("grass7:r.series",
{"input":rlist,
"-n":False,
"method":0,
"range":'-10000000000,10000000000',
"GRASS_REGION_PARAMETER":"%f,%f,%f,%f"% (xmin, xmax, ymin, ymax),
"GRASS_REGION_CELLSIZE_PARAMETER":0,
"output":Select_directory + "/Output.tif"})
Remember to save your script in the .qgis2/processing/scripts/
directory. You can then run this from the processing toolbox by calling the name or use it in your modeller.